【发布时间】:2016-01-06 15:18:55
【问题描述】:
我有下表('信息')
ID | value
1 | A
1 | B
2 | A
3 | A
3 | B
3 | C
4 | A
如何使用查询来呈现下表?
ID | A | B | C |
1 X x null
2 X null null
3 X X X
4 X null null
我有以下代码:
select id, CASE WHEN value= 'A' THEN 'X'
ELSE NULL END AS A,
CASE WHEN value= 'B' THEN 'X'
ELSE NULL END AS B,
CASE WHEN value= 'C' THEN 'X'
ELSE NULL END AS C
FROM information group by id;
但我也没有每个 ID 一行。
【问题讨论】:
-
如果不制作一个非常丑陋的 3 路连接表,您就不能这样做。
case只能查看当前记录的值,它只是一个单一的值。要获取其他类似记录的值,您需要子查询/联接。