2016-06-21 55 views
0

我想要计算可能出现在3个不同列中的值,但只需要计算唯一值。 Microsoft SQL。例如,值X可能出现在列A,B或C或全部3中,但需要确保我只获得唯一的值X计数,而不管它出现在哪个列中。选择可能出现在不同列中的唯一值的计数

谢谢!

+1

要清楚,要问的A列,B列或C列中至少有一列包含X的行数的计数?对列A和列B都包含X的行进行重复计数是不正确的,对吗? –

+0

您能否包含预期输出的示例表? –

回答

0

这是你在找什么?我想我应该也表明它没有组,因为你没有指定分组是多少列中找到这将计数每行只有1次出现的不管。

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 
0

如果你想在任何AB,或C来算的X每个单独发生,那么下面应该工作:

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 
+0

谢谢大家。最终有数百万个人的“X”,我需要一个独特的计数,所以我不认为我可以在任何地方指定“X”。我没有桌子,但让我们假设我们正在谈论公钥。然而,在这种情况下,每个键可以位于块a,块b或块c中或全部三个中。我只希望每个关键点只计算一次。如果我只有唯一键的总数,也许更容易。根据它们出现在哪个块上的情况,将会有一个按键数量的后续分割,不需要显示键的名称,只需显示计数。 –

+0

我想我需要一个选择计数不同跨多列 –

+0

@FlorenceGoy向我们展示示例输入和输出,这将是非常有益的,谢谢。 –

相关问题