即使计数值为 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
我有这样的东西:
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