2016-06-21 30 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向我們展示示例輸入和輸出,這將是非常有益的,謝謝。 –