使用两个查询创建水平视图

时间:2018-06-09 17:29:43

标签: mysql sql

我有两个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

提前致谢。

1 个答案:

答案 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