2014-04-06 157 views
2

我正在嘗試開發一個查詢,其中單個列的值被分成兩個或多個單獨的列以反映特定的ID是否具有每個不同的值。從表中選擇一列中的值分成多列的值

例如,我有這樣的一個表:

------------ 
| id | Val | 
|----|-----| 
| 1 | A | 
| 1 | B | 
| 2 | A | 
| 3 | A | 
| 4 | B | 
| 5 | A | 
------------ 

的查詢會產生一個表,看起來像這樣:

---------------------- 
| id | Val_1 | Val_2 | 
|----|-------|-------| 
| 1 | A | B | 
| 2 | A |  | 
| 3 | A |  | 
| 4 |  | B | 
| 5 | A |  | 
---------------------- 

具體來說,我想這個查詢只顯示編號的有缺失值(即ID「1」將被淘汰)。

到目前爲止,我已經通過使用自我內部連接嘗試了這一點,但我一直無法找到選擇的WHERE子句來產生這個。

有什麼建議嗎?

謝謝!

回答

2

更新:篩選出具有Val_1和Val_2

SELECT * FROM 
(
SELECT id, MAX(CASE WHEN val='A' THEN 'A' END) as Val_1, 
      MAX(CASE WHEN val='B' THEN 'B' END) as Val_2 
FROM table1 GROUP BY id 
)a 
WHERE Val_1 IS NULL OR Val_2 IS NULL; 
+0

,這如何防止同時具有A和B的項目出現在這個問題表示列? –

+0

@丹尼爾E.:是的,我誤解了一些問題 - 我認爲第二張表是所需的輸出。修復... – a1ex07

+0

這應該做到這一點。 –