我需要顯示每個「ID」有多少個不同的值。SQL - CASE當計數不同的值
它應該是這樣的:
id | component_a | component_b | component_c
--------------------------------------------------
KLS11 | none | one | none
KLS12 | one | one | none
KLS13 | several | one | none
KLS14 | one | one | one
KLS15 | one | several | several
我有如下表(表-A):
id | component_a | component_b | component_c
--------------------------------------------------
KLS11 | | a |
KLS12 | a | a |
KLS13 | a | a |
KLS13 | b | a |
KLS14 | a | a | a
KLS15 | a | a | a
KLS15 | a | b | b
下面的例子/解釋:
- KLS13有不同的價值觀component_a(a,b) - 所以它應該顯示'幾個'
- KLS13具有component_b(A,A)相同的值 - 因此它應該顯示 '一個'
- KLS13具有component_c沒有價值 - 因此它應該顯示 '無'
這是我的SQL代碼:
我已經爲component_a做了它,但它不起作用。我究竟做錯了什麼?
SELECT
CASE WHEN component_a is NULL THEN 'none'
WHEN (SELECT count(DISTINCT component_a)
FROM table_a
WHERE id=(SELECT id
FROM table_a GROUP BY id HAVING count(*)>1)>1 THEN 'several'
WHEN (SELECT count(DISTINCT component_a)
FROM table_a
WHERE id=(SELECT id
FROM table_a GROUP BY id HAVING count(*)>1)=1 THEN 'one'
END as componentA
FROM table_a
我是一名SQL初學者,所以我將不勝感激任何幫助。
有一個愉快的一天
我想你以前END.Also沒有工作需要ELSE沒有太大的幫助。 – Mihai
「不起作用」是什麼意思?你得到一個錯誤,或只是不是你想要的結果? –
你可以使用[SQLFiddle](http://sqlfiddle.com/)嗎? – Alexander