MySQL Как я могу преобразовать столбцы в строки?

#mysql #sql

#mysql #sql

Вопрос:

Существует столбец, представляющий 24 часа.
Данные поступают каждые 15 минут.
Например, в 10:15 значение вводится в столбец даты и времени столбца 10H.
Но то, что я хочу, я хочу отображать время и значение построчно, комбинируя столбец time и datetime…

  • как и для 2020-11-12 в 01:30
    строка: 2020-11-12 00:30
    столбец: 1 час

  • будет для 2020-12-12 в 01:30
    строка: 2020-11-12 01:30
    столбец: значение

как есть

 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 
  

чтобы быть

 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 
  

Ответ №1:

Я думаю, вы хотите union all :

 select datetime, `0H` as value
from t
union all
select datetime   interval 1 hour, `1H`
from t;
  

Вы также можете сделать это с помощью cross join :

 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
  

Комментарии:

1. @Strawberry: Держу пари, вам будет трудно найти какой-либо SQL-вопрос, на который Гордон Линофф еще не ответил….

2. @GMB Верно, но в данном случае это тот же автор

3. @Strawberry: да, я понял. Вопросы не совсем похожи, и то же самое касается ответов. Я видел, как Гордон несколько раз закрывал совершенно идентичные вопросы как дубликаты (и я, как правило, делаю то же самое, когда улавливаю такой шаблон).