【发布时间】:2014-05-29 11:02:49
【问题描述】:
我有一个查询,我想给出一个固定的表格输出(这样我可以更轻松地在 Excel 中绘制图表)。 查询如下:
SELECT
Case
WHEN ScrapsReasonID = 2339 THEN 'Box 5'
WHEN ScrapsReasonID = 2340 THEN 'Box 6'
WHEN ScrapsReasonID = 2342 THEN 'Box 7'
WHEN ScrapsReasonID = 2343 THEN 'Box 8'
WHEN ScrapsReasonID = 2344 THEN 'Box 9'
Else 'Unknown'
END
AS 'BoxNumber',
count(Case When PartNumberID = '378' Then Scraps End) AS '9.5mm',
count(Case When PartNumberID = '379' Then Scraps End) AS '10.0mm',
count(Case When PartNumberID = '380' Then Scraps End) AS '10.5mm'
FROM [ProcessControl].[dbo].[OutputScrap]
WHERE
MachineId = '93'
And ScrapsReasonID In
(
'2339',
'2340',
'2342',
'2343',
'2344'
)
And PDate Between '22-may-2014' and '29-may-2014'
GROUP BY ScrapsReasonID
如果在设置的日期之间肯定有所有 5 个 scrapreasonID,则此方法有效,但如果只有 3 个,例如我在 Sum 表中只得到 3 行。如果 9.5、10.0、10.5 不存在,是否有办法始终返回所有 5 个 scrapreasonID 和零值?
【问题讨论】:
-
考虑提供适当的 DDL(和/或 sqlfiddle)以及所需的结果集。
-
这是 sql-server 我猜你应该正确标记你的问题
-
去掉了 mysql 标签并添加了 sql-server 标签,因为语法清楚地暗示了 SQL Server。
标签: sql sql-server count sum