我有两个MySQL查询,我想在视图中水平转换结果。第一个查询给出以下结果:
Id Point Label
---------- ---------- ----------
1 11 'A'
1 12 'B'
1 9 'D'
2 15 'B'
2 8 'C'
2 3 'D'
第二个查询给我这个结果:
Label
----------
'A'
'B'
'C'
'D'
目的是通过以下结构进行查看:
Id 'A' 'B' 'C' 'D'
---------- ---------- ---------- ---------- ----------
1 11 12 -1 9
2 -1 15 8 3
提前致谢。
您可以使用条件聚合(必须事先知道列列表):
SELECT id,
COALESCE(MIN(CASE WHEN Label='A' THEN Point END),-1) AS A,
COALESCE(MIN(CASE WHEN Label='B' THEN Point END),-1) AS B,
COALESCE(MIN(CASE WHEN Label='C' THEN Point END),-1) AS C,
COALESCE(MIN(CASE WHEN Label='D' THEN Point END),-1) AS D
FROM tab
GROUP BY id;
假设元组(Id / Point / Label)是唯一的,否则可以使用SUM
代替MIN
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句