用两个查询制作水平视图

马塔斯

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

提前致谢。

卢卡斯·索兹达(Lukasz Szozda)

您可以使用条件聚合(必须事先知道列列表):

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章