【问题标题】:Count with GroupBY does not count the actual number of records, shows as 1 only使用 GroupBY 计数不计算实际记录数,仅显示为 1
【发布时间】:2021-08-06 22:53:36
【问题描述】:

我正在使用这个简单的示例。我有 2 条相同的记录,我只是想将这两条记录向上滚动,以便将 2 显示为计数,因为 X 和 Y 是精确的

WITH test AS (
    SELECT '11' AS X, 'BYE'AS y
    UNION
    SELECT '11' AS X, 'BYE' AS Y
)

SELECT x, y, COUNT(x)
FROM test
GROUP BY x,y

【问题讨论】:

标签: sql count ssms


【解决方案1】:

问题与COUNTGROUP BY 无关,与您的UNION 有关。您的 CTE (test) 仅提供一行,因为 UNION 查询返回 distinct 行,而您只有一行不同的行。使用UNION ALL

WITH test AS (
    SELECT '11' AS X, 'BYE'AS y
    UNION ALL
    SELECT '11' AS X, 'BYE' AS Y
)
SELECT x, y, COUNT(x)
FROM test
GROUP BY x,y;

更好的是,不要使用旧样式并使用VALUES 表结构:

WITH test AS(
    SELECT x,y
    FROM (VALUES(11,'BYE'),
                (11,'BYE'))V(x,y))
SELECT x, y, COUNT(x)
FROM test
GROUP BY x,y;

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多