即使计数值为 NULL,也显示列中的所有行

Showing all rows from a column even if count value is NULL

我有这样的东西:

CODE、ORG、TYPE、DATE 是 table 列。

SELECT     COUNT(CODE) AS OK, ORG AS ORG
FROM       EVENTS 
WHERE      (TYPE = 'A') and (DATE BETWEEN '2015-07-06' AND '2015-07-12')
GROUP BY   ORG

结果是:

OK    ORG
---------
93     1
292    2
51     3

主要问题是,总共有 6 个 Org,但他们没有被列出,因为 COUNT 个没有行可计数,因为这周他们无法工作。

我需要始终列出 ORG,如果有有效的 COUNT 值,则显示它,否则显示 0。像这样:

OK    ORG
---------
93     1
292    2
51     3
0      4
0      5
0      6

感谢您的帮助!

您需要首先从 EVENTS 中获取所有 ORG,然后执行 LEFT JOIN:

SELECT
    ISNULL(COUNT(e.CODE), 0) AS OK,
    t.ORG AS ORG
FROM(
    SELECT DISTINCT ORG FROM EVENTS
)t
LEFT JOIN EVENTS e
    ON e.ORG = t.ORG
    AND e.TYPE = 'A'
    AND e.DATE BETWEEN '2015-07-06' AND '2015-07-12'
GROUP BY t.ORG

你能试试这个吗:

SELECT     O.ORG AS ORG, SUM(ISNULL(E.CODE,0,1)) AS OK 
FROM       ORGANIZATIONS O
           LEFT JOIN EVENTS E ON O.ORG = E.ORG 
                              AND E.TYPE = 'A' 
                              AND E.DATE BETWEEN '2015-07-06' AND '2015-07-12'
GROUP BY   O.ORG