我有两个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
提前致谢。
答案 0 :(得分: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
。