以前会的,已经忘了! 还望大家指点一下!

skyclin 2018-01-31 02:04:57
A表
  任务号   作业号    数量  重量
  0001 1801001 3 344
0001 1801002 6 893
0002 1801003 6 734
0003 1801004 9 1838

B表
任务号 仓位 重量
0001 1 32
0001 2 53
0001 3 174
0002 1 32
0002 2 88
0002 3 189

我要达到效果是:
任务号   作业号    数量   重量 仓位1重量 仓位2重量 仓位3重量
  0001 1801001 3 344 32 53 174
0001 1801002 6 893 32 53 174
0002 1801003 6 734 32 88 189
0003 1801004 9 1838


SQL怎么写?
...全文
334 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2018-01-31
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([任务号] nvarchar(24),[作业号] int,[数量] int,[重量] int)
Insert #A
select N'0001',1801001,3,344 union all
select N'0001',1801002,6,893 union all
select N'0002',1801003,6,734 union all
select N'0003',1801004,9,1838
GO
if not object_id(N'Tempdb..#B') is null
drop table #B
Go
Create table #B([任务号] nvarchar(24),[仓位] int,[重量] int)
Insert #B
select N'0001',1,32 union all
select N'0001',2,53 union all
select N'0001',3,174 union all
select N'0002',1,32 union all
select N'0002',2,88 union all
select N'0002',3,189
Go
--测试数据结束
SELECT #A.* ,
SUM(CASE WHEN 仓位 = 1 THEN #B.重量
ELSE 0
END) AS 仓位1重量 ,
SUM(CASE WHEN 仓位 = 2 THEN #B.重量
ELSE 0
END) AS 仓位2重量 ,
SUM(CASE WHEN 仓位 = 3 THEN #B.重量
ELSE 0
END) AS 仓位3重量
FROM #A
LEFT JOIN #B ON #B.任务号 = #A.任务号
GROUP BY #A.任务号 ,
#a.作业号 ,
#A.数量 ,
#A.重量


27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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