首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL如何将列转换为行?

MySQL如何将列转换为行?
EN

Stack Overflow用户
提问于 2020-11-14 16:29:57
回答 1查看 71关注 0票数 0

有一列代表24小时。

数据每15分钟来一次。

例如,在10:15时,在10H列的DateTime列中输入该值。

但是我想要的是,通过将时间列和日期时间结合起来,逐行显示时间和值.

  • 2020年11-12点30分

排: 2020-11-12 00:30

列: 1H

  • 2020年12-12点30分

排: 2020-11-12 01:30

列: value

按原样

代码语言:javascript
复制
DateTime             0H  1H
2020 11 10 00:00:00  979 958 
2020 11 10 00:15:00  987 954 
2020 11 10 00:30:00  987 958 
2020 11 10 00:45:00  960 956 
2020 11 11 00:00:00    0 0 
2020 11 11 00:15:00    0 0 
2020 11 11 00:30:00    0 0 
2020 11 11 00:45:00    0 0 
2020 11 12 00:00:00  995 995 
2020 11 12 00:15:00  991 993 
2020 11 12 00:30:00 1000 993 
2020 11 12 00:45:00  993 996 

成为

代码语言:javascript
复制
DateTime             Value
2020 11 10 00:00:00    979 
2020 11 10 00:15:00    987 
2020 11 10 00:30:00    987 
2020 11 10 00:45:00    960 

2020 11 10 01:00:00    958 
2020 11 10 01:15:00    954 
2020 11 10 01:30:00    958 
2020 11 10 01:45:00    956 

2020 11 11 00:00:00      0
2020 11 11 00:15:00      0
2020 11 11 00:30:00      0
2020 11 11 00:45:00      0

2020 11 11 01:00:00      0 
2020 11 11 01:15:00      0 
2020 11 11 01:30:00      0 
2020 11 11 01:45:00      0 

2020 11 12 00:00:00    995 
2020 11 12 00:15:00    991 
2020 11 12 00:30:00   1000 
2020 11 12 00:45:00    993 

2020 11 12 01:00:00    995 
2020 11 12 01:15:00    993 
2020 11 12 01:30:00    993 
2020 11 12 01:45:00    996 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-14 16:34:17

我想你想要union all

代码语言:javascript
复制
select datetime, `0H` as value
from t
union all
select datetime + interval 1 hour, `1H`
from t;

您也可以使用cross join来完成这一任务。

代码语言:javascript
复制
select (datetime + interval h hour) as datetime,
       (case when h.h = 0 then `0H` else `1H` end) as value
from t cross join
     (select 0 as h union all select 1 as h) h
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64836104

复制
相关文章

相似问题

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