很难的SQL语句,请高手帮忙看看?

dacsd 2003-10-21 08:21:28
有两个表,分别为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
..... ... ... ... ... ... ...


请高手帮忙解答,谢谢!
...全文
24 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltmb118 2003-10-22
  • 打赏
  • 举报
回复
完全欣赏 lyal21cn(lyal21cn) ( )


我就是这么干的,sql语句完全可以实现
kingting 2003-10-21
  • 打赏
  • 举报
回复
SQL SERVER 中可用分组带参数ROLLUP实现统计功能,结果的NULL表示总计

select 编号, 类别编码, sum(收入) as 收入小计 from t2
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进行处理
njxdh 2003-10-21
  • 打赏
  • 举报
回复
表结构设计不合理,还要为难SQL
lyal21cn 2003-10-21
  • 打赏
  • 举报
回复
我想使用游标针对表2逐条记录筛选,然后把符合某条件的值插到一个临时建立的表中(表结构与要求的结果结构一致,再加一个编码字段,这里的临时是指运行这个程序时才建立的表,在这个查询下次进入前都一直存在),最后吧再对这个临时表进行统计汇总,具体的可以翻一下游标的资料!
8683404 2003-10-21
  • 打赏
  • 举报
回复
sql serevr:
select 编号 , 主食1 = sum(case when "类别编码 "=0101 then " 收入" else 0 end ), 主食2=... , 副食 =... , 服装1=... , 服装2=... , 合计=sum("收入")
from t2
group by "编号"

try ro try
Ngg 2003-10-21
  • 打赏
  • 举报
回复
我沒有見過SQL可以這樣生成﹐我想最好寫一段代碼。
ThenLong 2003-10-21
  • 打赏
  • 举报
回复
多重Select嵌套
yxl2000 2003-10-21
  • 打赏
  • 举报
回复
帮你顶

up
tanqth 2003-10-21
  • 打赏
  • 举报
回复
TRANSFORM Sum(t2.收入) AS 收入之Sum
SELECT t2.编号, Sum(t2.收入) AS [总计 收入]
FROM t2
GROUP BY t2.编号
PIVOT t2.类别编码;
ThenLong 2003-10-21
  • 打赏
  • 举报
回复
先统计,
SQL没法直接生成这种表的,除非你SQL很精通。。。
我闪...
dacsd 2003-10-21
  • 打赏
  • 举报
回复
谢谢各位帮助,已经解决。
pdbird 2003-10-21
  • 打赏
  • 举报
回复
sql serevr:
select 编号 , 主食1 = sum(case when "类别编码 "=0101 then " 收入" else 0 end ), 主食2=... , 副食 =... , 服装1=... , 服装2=... , 合计=sum("收入")
from t2
group by 编号
order by 编号
pingo888 2003-10-21
  • 打赏
  • 举报
回复
首先我要说我个人觉得你的表结构设计存在问题,所以写SQL也就比较麻烦。

再有,如其这样苦想代码,不如在表上下功夫。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧