#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: да, я понял. Вопросы не совсем похожи, и то же самое касается ответов. Я видел, как Гордон несколько раз закрывал совершенно идентичные вопросы как дубликаты (и я, как правило, делаю то же самое, когда улавливаю такой шаблон).