选择可能出现在不同列中的唯一值的计数

时间:2016-06-21 23:44:01

标签: sql

我正在尝试计算可能出现在3个不同列中的值,但只需要计算唯一值。 Microsoft SQL。 例如。值X可能出现在A,B或C列或全部3中,但需要确保我只获得值X的唯一计数,无论它是什么列。

谢谢!

2 个答案:

答案 0 :(得分:0)

这是你在找什么?这将计算每行只发生一次,无论它找到多少列。

SELECT
    ID
    ,SUM(CASE WHEN ColA = 'X' OR ColB = 'X' OR ColC = 'X' THEN 1 ELSE 0 END) AS ValueCount
FROM
    TABLENAME
GROUP BY
    ID

我想我应该在没有小组的情况下展示它,因为你没有指定分组。

SELECT
    ,SUM(CASE WHEN ColA = 'X' OR ColB = 'X' OR ColC = 'X' THEN 1 ELSE 0 END) AS ValueCount
FROM
    TABLENAME

答案 1 :(得分:0)

如果您想计算任何XAB中每个C的出现次数,那么工作:

SELECT
    SUM(CASE WHEN A = 'X' THEN 1 ELSE 0 END) +
    SUM(CASE WHEN B = 'X' THEN 1 ELSE 0 END) +
    SUM(CASE WHEN C = 'X' THEN 1 ELSE 0 END)
FROM yourTable