标题:union all 结果合并 不合要求
只看楼主
zhaoliang109
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-7-27
结帖率:0
已结贴  问题点数:20 回复次数:2 
union all 结果合并 不合要求
程序代码:
(SELECT     SUM([金额(美金)]) AS [月金额]
FROM         Source
WHERE     (月份 = 1) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 2) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 3) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 4) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 5) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 6) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 7) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 8) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 9) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 10) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 11) AND (当前状态 = N'已发报告')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 12) AND (当前状态 = N'已发报告')
)
union all
(SELECT     SUM([金额(美金)]) AS [常规检验金额]
FROM         Source
WHERE     (月份 = 1 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 2 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 3 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 4 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 5 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 6 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 7 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 8 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 9 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 10 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 11 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
union all
SELECT     SUM([金额(美金)])
FROM         Source
WHERE     (月份 = 12 AND 当前状态 = N'已发报告') and (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI')
)

获取结果如下:

我想要的结果如下:

应该如何写?
2014-07-27 17:53
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
得分:10 
select 月份, sum([金额(美金)]) as [月金额],
       sum(case when (检验类型 = N'PSI' or 检验类型 = N'DPI' or 检验类型 = N'PPI') then [金额(美金)] else 0 end) as [常规检验金额]
from source where 当前状态 = N'已发报告' group by 月份

以上语句未验证,请调试下!

[ 本帖最后由 volte 于 2014-7-30 16:46 编辑 ]

大家都是朋友,有空就来坐坐!
2014-07-28 10:03
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:10 
楼主写那么长 看着不眼花?
2014-07-28 16:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-434451-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.139098 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved