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

dacsd 2003-10-21 08:23:23

有两个表,分别为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
..... ... ... ... ... ... ...


请高手帮忙解答,谢谢!在delphi中统计SQL中的数据
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yujohny 2003-10-21
  • 打赏
  • 举报
回复
select 编号,sum(case when 类别编号 like '0101%' then 收入 else 0 end) 主食1,
sum(case when 类别编号 like '0102%' then 收入 else 0 end) 主食2,
sum(case when (类别编号 like '0103%') or (类别编号 like '0104%') then 收入 else 0 end) 副食,
sum(case when 类别编号 like '0201%' then 收入 else 0 end) 服装1,
sum(case when 类别编号 like '0202%' then 收入 else 0 end) 服装2,
sum(收入) 合计
from table2
group by 编号
txlicenhe 2003-10-21
  • 打赏
  • 举报
回复
select 编号,
sum(case when left(类别编码,4)= '0101' then 收入 else 0 end) 主食1,
sum(case when left(类别编码,4)='0102' then 收入 else 0 end) 主食2,
sum(case when left(类别编码,4)='0201' then 收入 else 0 end) 服装1,
sum(case when left(类别编码,4)='0202' then 收入 else 0 end) 服装2,
sum(case when left(类别编码,4)='0103' then 收入 else 0 end) 副食1,
sum(case when left(类别编码,4)='0104' then 收入 else 0 end) 副食2,
sum(收入) 合计
from t2 group by 编号
pengdali 2003-10-21
  • 打赏
  • 举报
回复
select 编号,
sum(case when 类别编码 like '0101%' then 收入 else 0 end) 主食1,
sum(case when 类别编码 like '0102%' then 收入 else 0 end) 主食2,
sum(case when 类别编码 like '0201%' then 收入 else 0 end) 服装1,
sum(case when 类别编码 like '0202%' then 收入 else 0 end) 服装2,
sum(case when 类别编码 like '0103%' then 收入 else 0 end) 副食1,
sum(case when 类别编码 like '0104%' then 收入 else 0 end) 副食2,
sum(收入) 合计
from t2 group by 编号
yujohny 2003-10-21
  • 打赏
  • 举报
回复
select 编号,sum(case when 类别编号 like '0101' then 收入 else 0 end) 主食1,
sum(case when 类别编号 like '0102' then 收入 else 0 end) 主食2,
sum(case when (类别编号 like '0103') or (类别编号 like '0104') then 收入 else 0 end) 副食,
sum(case when 类别编号 like '0201' then 收入 else 0 end) 服装1,
sum(case when 类别编号 like '0202' then 收入 else 0 end) 服装2,
sum(收入) 合计
from table2
group by 编号
txlicenhe 2003-10-21
  • 打赏
  • 举报
回复
try:
declare @sql varchar(8000)
set @sql='select 编号'
select @sql=@sql+',sum(case left(类别编码,4) when '''+left(类别编码,4)+''' then 收入 end) ['+left(类别编码,4)+']'
from (select distinct left(类别编码,4) from t2) a
select @sql=@sql+' from t2 group by 编号'
--print @sql
exec(@sql)

dacsd 2003-10-21
  • 打赏
  • 举报
回复
谢谢各位

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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