计算临时 table 中的空值

Counting null values in a temporary table

我有一个存储过程,它是临时创建的 table。此 table 有几列,其中一列只能有五个不同的值,具体取决于某些条件。

 myID | ... |  myValues
- - - |- - -|- - - - - - -
   1  | ... |  Message 1
   2  | ... |  Message 2
   3  | ... |  Message 3
   4  | ... |  Message 4
   5  | ... |  Message 5
   6  | ... |  Message 2
   7  | ... |  Message 4

现在我有另一个存储过程读取此 table 和 returns 每条消息在 table 上显示的次数。

SELECT myValues, COUNT(*) AS Nr
FROM #temp_table
GROUP BY myValues

Output:

  myValues | Nr
- - - - - -|- - - 
 Message 1 |  1
 Message 2 |  2
 Message 3 |  1
 Message 4 |  2 
 Message 5 |  1

问题是我没有收到这些消息中的任何一条。我的查询将只计算 table 上的项目,但我希望它们在那里的值为零。

 myID | ... |  myValues
- - - |- - -|- - - - - - -
   1  | ... |  Message 1
   2  | ... |  Message 3
   3  | ... |  Message 3

--# WANTED OUTPUT #--

  myValues | Nr
- - - - - -|- - - 
 Message 1 |  1
 Message 2 |  0
 Message 3 |  2
 Message 4 |  0 
 Message 5 |  0

我试过使用连接,我正在考虑创建另一个 table 但我不知道如何让它工作。

假设您预先知道所有可能的值,您可以加入它们:

SELECT    a.myValues, COALESCE(cnt, 0) AS Nr
FROM      (SELECT 'Message 1' AS myValues UNION ALL
           SELECT 'Message 2' UNION ALL
           SELECT 'Message 3' UNION ALL
           SELECT 'Message 4' UNION ALL
           SELECT 'Message 5') a 
LEFT JOIN (SELECT   myValues, COUNT(*) AS cnt
           FROM     #temp_table
           GROUP BY myValues) b ON a.myValues = b.myValues