0
我有一个联合所有查询。但在我的结果集中,我有2个P1记录和3个P2记录。即使没有值,我仍想显示3个P3记录。如何显示零或日期值,如果没有记录显示
请参考下面
SELECT 'P1' AS Priority,
Count(*) Total,
CONVERT(VARCHAR(5), Datepart(yyyy, logdate))
+ RIGHT('00'+ CONVERT(VARCHAR(5), Datepart(mm, logdate)), 2)
FROM dbo.mg_rpt_calls
WHERE priority = 'P1'
AND CONVERT(VARCHAR(5), Datepart(yyyy, logdate))
+ RIGHT('00'+ CONVERT(VARCHAR(5), Datepart(mm, logdate)), 2) BETWEEN
CONVERT(VARCHAR(5), Datepart(yyyy, Getdate()))
+ RIGHT(
'00'+ CONVERT(VARCHAR(5), Datepart(mm, Getdate())-2), 2)AND
CONVERT(
VARCHAR(5), Datepart(yyyy, Getdate()))
+
RIGHT
('00'+ CONVERT(VARCHAR(5), Datepart(mm, Getdate())), 2)
GROUP BY CONVERT(VARCHAR(5), Datepart(yyyy, logdate))
+ RIGHT('00'+ CONVERT(VARCHAR(5), Datepart(mm, logdate)), 2)
UNION ALL
SELECT 'P2' AS Priority,
Count(*) Total,
CONVERT(VARCHAR(5), Datepart(yyyy, logdate))
+ RIGHT('00'+ CONVERT(VARCHAR(5), Datepart(mm, logdate)), 2)
FROM dbo.mg_rpt_calls
WHERE priority = 'P2'
AND CONVERT(VARCHAR(5), Datepart(yyyy, logdate))
+ RIGHT('00'+ CONVERT(VARCHAR(5), Datepart(mm, logdate)), 2) BETWEEN
CONVERT(VARCHAR(5), Datepart(yyyy, Getdate()))
+ RIGHT(
'00'+ CONVERT(VARCHAR(5), Datepart(mm, Getdate())-2), 2)AND
CONVERT(
VARCHAR(5), Datepart(yyyy, Getdate()))
+
RIGHT
('00'+ CONVERT(VARCHAR(5), Datepart(mm, Getdate())), 2)
GROUP BY CONVERT(VARCHAR(5), Datepart(yyyy, logdate))
+ RIGHT('00'+ CONVERT(VARCHAR(5), Datepart(mm, logdate)), 2)
ORDER BY CONVERT(VARCHAR(5), Datepart(yyyy, logdate))
+ RIGHT('00'+ CONVERT(VARCHAR(5), Datepart(mm, logdate)), 2)
我的结果集我的代码如下
Priority Total (No column name)
P2 9 201209
P2 15 201210
P1 1 201210
P1 1 201211
P2 5 201211
感谢, 迈克尔
对不起,我可能会错过一些东西 - 但P3记录从哪里来?这些人没有工会......还有,你为什么要使用工会? –