注册 登录
编程论坛 SQL Server论坛

如何写这样的报表

coolfaith 发布于 2008-11-17 21:03, 1045 次点击
有4张表,一张指令单表,其余3张表是由这张指令单表信息拓展的,它们之间的关联是指令单号相同。
T_Dictate   指令单表
ID   DictateNO  ProductNO   ProductName
1     0001      A        A1
2     0002      B        B1
3     0003      C        C1
4     0004      D        D1
5     0005      E        E1

T_Tast
ID   DictateNO   Number  
1     0002          20
2     0002          20
3     0003          20
4     0004          30
5     0005          35
6     0005          20


T_Notice
ID   DictateNO   Number  
1     0001          10
2     0002          20
3     0003          20
4     0003          20
5     0005          20
6     0005          20

T_InStorage
ID   DictateNO   Number  
1     0001          20
1     0001          20
2     0002          10
3     0003          20
5     0004          30
6     0005          20
7     0005          20

最后想得到的报表格式为:

DictateNO   ProductNO   ProductName   TastNumber    NoticeNumber   InStorageNumber
0001        A        A1               0            10              40
0002        B        B1               40            20              10
0003        C        C1               20            40              20
0004        D        D1               30            0               30
0005        E        E1               20            20              40

数量上是没有联系,都是根据指令单号来关联的,请问该如何写这个存储过程
3 回复
#2
coolfaith2008-11-18 08:49
有没有人帮忙看看,急用,谢谢
#3
happynight2008-11-18 13:56
SELECT T_Dictate.DictateNO,T_Dictate.ProductNO,T_Dictate.ProductName
,a.SumNumber  AS TastNumber,b.SumNumber  AS  NoticeNumber,c.SumNumber  AS    InStorageNumber
FROM T_Dictate LEFT JOIN
(SELECT DictateNO,SUM(Number) SumNumber FROM T_Tast GROUP BY DictateNO) a ON
T_Dictate.DictateNO= a.DictateNO
LEFT JOIN
(SELECT DictateNO,SUM(Number) SumNumber FROM T_Notice GROUP BY DictateNO) b ON
T_Dictate.DictateNO= b.DictateNO
LEFT JOIN
(SELECT DictateNO,SUM(Number) SumNumber FROM T_InStorage
GROUP BY DictateNO) c ON
T_Dictate.DictateNO= c.DictateNO
-----------------------------------------
未调试 应该没问题 等于NULL的数据你自己加个Case改成0吧

[[it] 本帖最后由 happynight 于 2008-11-18 13:57 编辑 [/it]]
#4
coolfaith2008-11-21 10:23
差不多是这样,谢谢了
1