2012-07-03 70 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