我需要查询来获取像数据透视表一样的输出?

时间:2020-06-05 07:42:46

标签: mysql sql

我的桌子看起来像这样

name    value   monthyear   year

g1     10   March 18    2018
g1     11   March 18    2018
g1     34   March 19    2019
g1     45   March 19    2019
g2     10   April 18    2018
g1     11   May 18      2018
g1     34   May 19      2019
g1     45   June 19     2019

我需要像这样

Name    March 18    March 19    April 18    May 18      May 19  June 19
g1      21          79                       11           34      45
g2                                  10

在数据透视表中,我正在获取此信息,如何使用sql查询获取此表?请先帮助并谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在case内使用sum表达式。这是demo

select
    name,
    sum(case when monthyear = 'March 18' then value end) as March18
    sum(case when monthyear = 'March 19' then value end) as March19
    ..
    ..
from yourTable
group by
    name

输出:

| name | March_18 | March_19 | April_18 | May_18 | May_19 | June_19 |
| ---- | -------- | -------- | -------- | ------ | ------ | ------- |
| g1   | 21       | 79       |          | 11     | 34     |         |
| g2   |          |          | 10       |        |        |         |