0

我有两个由 ID 绑定的表的数据。问题是我不想选择列名,而是选择里面的实际数据。所以我决定使用 SELECT 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 

我如何只选择无空值?

4

1 回答 1

2

GROUP BY对于MAX其他列:

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
于 2012-07-03T15:52:48.813 回答