我在名为“GL Table
” - Country
,Account
和Amount
的表格中有来自总帐的一些数据。我正在尝试根据帐户字段中的某些帐户汇总金额字段,然后将SUM作为“修订收入”插入同一字段(Country, Account, Amount
)中同一表格底部的每个国家/地区。我一直遇到障碍,我想知道我是否应该为此创建另一个表而不是将它保存在同一个表中。
这是我提出的但是它没有用。
SELECT COUNTRY,
AMOUNT
FROM GL_TABLE
WHERE AMOUNT = (
SELECT SUM(AMOUNT) FROM GL_TABLE
WHERE ACCOUNT IN 'PTBI' OR
ACCOUNT IN 'MLS_ENT' OR
ACCOUNT IN 'VAL_ALLOW' OR
ACCOUNT IN 'RSC_DEV'
GROUP BY COUNTRY);
答案 0 :(得分:1)
你的问题真的不清楚......
http://sqlfiddle.com/#!2/d0bc3/1/0
create table GL_Table (
Country varchar(20),
Account varchar(20),
Amount float
);
insert into GL_Table values ('USA','PTBI',100);
insert into GL_Table values ('USA','PTBI',100);
insert into GL_Table values ('USA','PTBI',100);
insert into GL_Table values ('USA','MLS_ENT',101);
insert into GL_Table values ('USA','RSC_DEV',102);
insert into GL_Table values ('USA','RSC_DEV',102);
insert into GL_Table values ('USA','NOTHING',777);
insert into GL_Table values ('USA','NOTHING',777);
所以数据现在是:
COUNTRY ACCOUNT AMOUNT
USA PTBI 100
USA PTBI 100
USA PTBI 100
USA MLS_ENT 101
USA RSC_DEV 102
USA RSC_DEV 102
USA NOTHING 777
USA NOTHING 777
然后,仅添加SUM
行的查询就像是:
INSERT INTO GL_TABLE
SELECT COUNTRY,
concat('SUM OF ', ACCOUNT) as NEW_ACCT_NAME,
SUM(AMOUNT) as SUM_ACCOUNT
FROM GL_TABLE
WHERE ACCOUNT IN ('PTBI', 'MLS_ENT','VAL_ALLOW','RSC_DEV')
GROUP BY COUNTRY, ACCOUNT;
现在数据将是(select * from gl_table
):
COUNTRY ACCOUNT AMOUNT
USA PTBI 100
USA PTBI 100
USA PTBI 100
USA MLS_ENT 101
USA RSC_DEV 102
USA RSC_DEV 102
USA NOTHING 777
USA NOTHING 777
USA SUM OF MLS_ENT 101
USA SUM OF PTBI 300
USA SUM OF RSC_DEV 204
再次查看了您的查询,看起来您想要一个国家/地区总和?不知道......(不会有太大变化)
INSERT INTO GL_TABLE
SELECT COUNTRY,
concat('SUM FOR ', COUNTRY) as NEW_ACCT_NAME,
SUM(AMOUNT) as SUM_ACCOUNT
FROM GL_TABLE
WHERE ACCOUNT IN ('PTBI', 'MLS_ENT','VAL_ALLOW','RSC_DEV')
GROUP BY COUNTRY;
所以数据最终会......
COUNTRY ACCOUNT AMOUNT
USA PTBI 100
USA PTBI 100
USA PTBI 100
USA MLS_ENT 101
USA RSC_DEV 102
USA RSC_DEV 102
USA NOTHING 777
USA NOTHING 777
USA SUM FOR USA 605
答案 1 :(得分:0)
我想你想
SELECT SUM(AMOUNT), COUNTRY FROM GL_TABLE WHERE ACCOUNT IN 'PTBI' OR ACCOUNT IN 'MLS_ENT' OR ACCOUNT IN 'VAL_ALLOW' OR ACCOUNT IN 'RSC_DEV' GROUP BY COUNTRY
如果您想查找某个国家/地区的所有帐户的总和,或者您希望按国家/地区按帐户细分
SELECT SUM(AMOUNT), COUNTRY, ACCOUNT FROM GL_TABLE WHERE ACCOUNT IN 'PTBI' OR ACCOUNT IN 'MLS_ENT' OR ACCOUNT IN 'VAL_ALLOW' OR ACCOUNT IN 'RSC_DEV' GROUP BY COUNTRY, ACCOUNT
至于是否将它插回到同一个表中我会说db标准化会是一个坏主意。如果你可以计算它,最好只运行一个查询,如果查询太长而无法运行,那么只要用户知道它是一个快照,就可以运行查询并填充一个单独的表。及时而不是实时数据。