代码之家  ›  专栏  ›  技术社区  ›  Vlad Matao

数据透视表sql

  •  0
  • Vlad Matao  · 技术社区  · 6 年前

    我有这张桌子:

    |............id.............|............a............. |.............b............|
    |...........123qwe....      |...........0.............  |.............13...........|
    

    我需要像这样旋转它:

    |.........id................|........indicator....      |.............value........ |
    |...........123qwe....      |...........a.............  |.............0.............|
    |...........123qwe....      |...........b.............  |.............13........... |
    

    有超过N 100列的指示符作为标题(a、b、c、d、e、f等),因此需要一种循环。

    2 回复  |  直到 6 年前
        1
  •  1
  •   symcbean    6 年前
     SELECT id, 'a', SUM(a)
     FROM yourtable
     GROUP BY id
     UNION 
     SELECT id, 'b', SUM(b)
     FROM yourtable
     GROUP BY id
     UNION
     ...
    

    和往常一样,这家公司 正确的 答案是规范化您的模式。

        2
  •  0
  •   mengxun    6 年前

    像这样做

    SELECT id, 'a' AS indicator, a AS value
    FROM test
    UNION
    SELECT id, 'b' AS indicator, b AS value
    FROM test;
    

    如果你想要循环,你最好把它写在程序里。。。