COUNT(CASE WHEN)中的重复行 SQL
Duplicate rows in COUNT(CASE WHEN) SQL
初学者 SQL 用户在这里。
我需要我的 table 看起来像这样:
ModuleID | Draft | Proposed | Committed | Total
---------------------------------------------
A | 1 | 0 | 1 | 2
目前看起来是这样的:
ModuleID | Draft | Proposed | Committed | Total
---------------------------------------------
A | 1 | 0 | 1 | 1
A | 0 | 0 | 1 | 1
代码如下:
SELECT T3.NAME AS ModuleID,
COUNT(CASE WHEN T4.LITERAL_NAME = 'Draft' THEN 1 END) AS Draft,
COUNT(CASE WHEN T4.LITERAL_NAME = 'Proposed' THEN 1 END) AS Proposed,
COUNT(CASE WHEN T4.LITERAL_NAME = 'Committed' THEN 1 END) AS Committed,
SUM(1) AS Total
FROM ...
WHERE ...
GROUP BY T4.LITERAL_NAME,T3.NAME
所以它提取了正确的信息,但它在每列复制模块 ID。我已经搜索了电路板和 google,但无法找出问题所在。请帮忙!
GROUP BY T4.LITERAL_NAME,T3.NAME
改为
GROUP BY T3.NAME
初学者 SQL 用户在这里。
我需要我的 table 看起来像这样:
ModuleID | Draft | Proposed | Committed | Total
---------------------------------------------
A | 1 | 0 | 1 | 2
目前看起来是这样的:
ModuleID | Draft | Proposed | Committed | Total
---------------------------------------------
A | 1 | 0 | 1 | 1
A | 0 | 0 | 1 | 1
代码如下:
SELECT T3.NAME AS ModuleID,
COUNT(CASE WHEN T4.LITERAL_NAME = 'Draft' THEN 1 END) AS Draft,
COUNT(CASE WHEN T4.LITERAL_NAME = 'Proposed' THEN 1 END) AS Proposed,
COUNT(CASE WHEN T4.LITERAL_NAME = 'Committed' THEN 1 END) AS Committed,
SUM(1) AS Total
FROM ...
WHERE ...
GROUP BY T4.LITERAL_NAME,T3.NAME
所以它提取了正确的信息,但它在每列复制模块 ID。我已经搜索了电路板和 google,但无法找出问题所在。请帮忙!
GROUP BY T4.LITERAL_NAME,T3.NAME
改为
GROUP BY T3.NAME