首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从mysql表转置数据

从mysql表转置数据
EN

Stack Overflow用户
提问于 2018-12-10 13:24:19
回答 1查看 57关注 0票数 1

我有一个表格,其中的数据是由指示器垂直输入的,如下例所示

代码语言:javascript
复制
^ID ^ idc1   ^ idc2 ^   idc3  ^
|1  |    7   |  11  |    5    |
|2  |    8   |  14  |   19    |
|3  |    9   |  22  |    4    |

我有一个查询,允许我将数据水平地转到水果上。但是,这个查询只给出了第一行,而不是全部3行。

代码语言:javascript
复制
^ apples ^ Pears ^ Orange ^
|   7    |   8   |   9    | (idc1)

我想得到这个结果

代码语言:javascript
复制
^ apples ^ Pears ^ Orange ^
|    7   |   8   |    9   |   (idc1)
|    11  |   14  |   22   |   (idc2)
|    5   |   19  |    4   |   (idc3)

以下是查询:

代码语言:javascript
复制
SELECT 
    sum( if( id = 1, idc1, 0 ) ) AS Apples,  
    sum( if( id = 2, idc1, 0 ) ) AS Pears, 
    sum( if( id = 3, idc1, 0 ) ) AS Orange
FROM 
    brf_vr
WHERE  idcdate = '2018-11-27'
GROUP BY 
    idcdate;

有人知道吗

先进THX

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-10 14:26:33

试试这个,但我不建议:

代码语言:javascript
复制
SELECT idcList,
       MAX(CASE WHEN ID = 1 THEN value END) `Apple`,
       MAX(CASE WHEN ID = 2 THEN value END) `Pears`,
       MAX(CASE WHEN ID = 3 THEN value END) `Orange`
from
  (
    SELECT ID,
           idcList,
           CASE idcList
             WHEN 'idc1' THEN idc1
             WHEN 'idc2' THEN idc2
             WHEN 'idc3' THEN idc3
             END value
    FROM mysql_test t
           CROSS JOIN
           (
             SELECT 'idc1' idcList
             UNION ALL
             SELECT 'idc2'
             UNION ALL
             SELECT 'idc3'
           ) c
  ) q
GROUP BY idcList
ORDER BY FIELD(idcList, 'idc1', 'idc2', 'idc3')

如果您可以查看架构设计

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53706630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档