有两个表,分别为t1和t2,其结构和数据如下:
t1:
编号 食品收入 服装收入
10000 10000 6000
10003 12000 10000
10004 9000 8000
..... .... ....t2:
编号 类别编码 收入
10000 01010000 8000 0101 代表主食1
10000 01020000 2000 0102 代表主食2
10000 02010000 3000 0201 代表服装1
10000 02020000 3000 0202 代表服装2
10003 01030000 2000 0103 代表副食1
10003 01040000 1000 0104 代表副食2
10003 01020000 9000
10003 02010000 10000
10004 01010000 8000
10004 01010000 1000
10004 02020000 4000
10004 02010000 4000
... ....... ....希望得到如下结果:
编号 主食1 主食2 副食 服装1 服装2 合计
10000 8000 2000 0 3000 3000 16000
10003 0 9000 3000 10000 0 22000
10004 9000 0 0 4000 4000 17000
..... ... ... ... ... ... ...
请高手帮忙解答,谢谢!
t1:
编号 食品收入 服装收入
10000 10000 6000
10003 12000 10000
10004 9000 8000
..... .... ....t2:
编号 类别编码 收入
10000 01010000 8000 0101 代表主食1
10000 01020000 2000 0102 代表主食2
10000 02010000 3000 0201 代表服装1
10000 02020000 3000 0202 代表服装2
10003 01030000 2000 0103 代表副食1
10003 01040000 1000 0104 代表副食2
10003 01020000 9000
10003 02010000 10000
10004 01010000 8000
10004 01010000 1000
10004 02020000 4000
10004 02010000 4000
... ....... ....希望得到如下结果:
编号 主食1 主食2 副食 服装1 服装2 合计
10000 8000 2000 0 3000 3000 16000
10003 0 9000 3000 10000 0 22000
10004 9000 0 0 4000 4000 17000
..... ... ... ... ... ... ...
请高手帮忙解答,谢谢!
SQL没法直接生成这种表的,除非你SQL很精通
我闪...
SELECT t2.编号, Sum(t2.收入) AS [总计 收入]
FROM t2
GROUP BY t2.编号
PIVOT t2.类别编码;
select 编号 , 主食1 = sum(case when "类别编码 "=0101 then " 收入" else 0 end ), 主食2=... , 副食 =... , 服装1=... , 服装2=... , 合计=sum("收入")
from t2
group by "编号"try ro try
group by 编号, 类别编码, with rollup
order by 编号, 类别编码显示结果应该类似
------------------------------
编号 类别编码 收入
10000 01010000 9000
10000 01020000 8000
10000 NULL 17000
………………………………………
20000 01010000 1000
20000 01020000 2000
20000 NULL 3000
………………………………………
NULL NULL 20000
=========================================
之后你再可以把上面的结果当作一张表关联T1进行处理
select 编号 , 主食1 = sum(case when "类别编码 "=0101 then " 收入" else 0 end ), 主食2=... , 副食 =... , 服装1=... , 服装2=... , 合计=sum("收入")
from t2
group by 编号
order by 编号
我就是这么干的,sql语句完全可以实现