2012-07-03 72 views
0

我有兩個表中的數據由一個ID綁定。問題是我不想選擇列名,而是選擇裏面的實際數據。所以我決定使用SELECT CASE語句,但是它產生了一個有許多空值的表。我將如何選擇非空數據?SQL Case語句除去空值

column value column name 
200    car 
300    boat 

SQL查詢:

SELECT 
CASE WHEN b.name = 'car' THEN a.value END as 'car', 
CASE WHEN b.boat= 'car' THEN a.value END as 'boat' 
WHERE a.id = b.id 

輸出是

CAR BOAT 
200 NULL 
NULL 300 

我怎麼會只選擇沒有空值?

+0

http://stackoverflow.com/questions/5658457/not-equal-operator-in-t-sql-on-null – Jodrell

回答

2

GROUP BYMAX其它列:

SELECT a.id, 
     MAX(CASE WHEN b.name = 'car' THEN a.value END) as 'car', 
     MAX(CASE WHEN b.boat= 'car' THEN a.value END) as 'boat' 
WHERE a.id = b.id 
GROUP BY a.id