【问题标题】:Duplicate rows in COUNT(CASE WHEN) SQLCOUNT(CASE WHEN) SQL 中的重复行
【发布时间】:2023-03-25 07:58:02
【问题描述】:

这里是初级 SQL 用户。

我需要我的桌子看起来像这样:

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。我已经搜索了董事会和谷歌,无法弄清楚出了什么问题。请帮忙!

【问题讨论】:

  • 将literalname 和name 字段放入您的选择字段列表中,您可能会发现它并没有“复制”您的行。您有唯一的行,只是没有显示使它们唯一的字段。

标签: mysql sql-server duplicates rows multiple-columns


【解决方案1】:
GROUP BY T4.LITERAL_NAME,T3.NAME

改成

GROUP BY T3.NAME

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多