Я много искал, но не смог найти ответ.Может быть, кто-то может дать мне несколько советов: у меня есть таблица, которая содержит следующие столбцы и данные (просто пример):
+-------+------------------+----+--------+--------+
| Type | InsertDate | ID | Value1 | Value2 |
+-------+------------------+----+--------+--------+
| Data | 2019-04-29 14:30 | 01 | 2 | 1 |
| Info | 2019-04-29 14:30 | 01 | 3 | 3 |
| Data | 2019-04-29 14:42 | 01 | 5 | 5 |
| Data | 2019-04-29 14:42 | 02 | 8 | 5 |
| Info | 2019-04-28 09:30 | 02 | 1 | 7 |
| Data | 2019-04-28 12:30 | 02 | 8 | 0 |
| Data | 2019-04-28 12:10 | 02 | 3 | 1 |
+-------+------------------+----+--------+--------+
Теперь я хочу добиться суммирования Value1 ежечасно для каждого идентификатора, где Type являетсяДанные в настроенное время.Т.е. с 28.04 по 29.04 я хотел бы получить вывод:
+----+------------------+------------------+
| ID | 12:00 28-04-2019 | 14:00 29-04-2019 |
+----+------------------+------------------+
| 01 | 0 | 7 |
| 02 | 11 | 8 |
+----+------------------+------------------+
Я нашел много примеров, как суммировать Value1 в час для одного идентификатора, но мне нужно иметь вывод для нескольких идентификаторов.
Сейчас у меня есть следующий запрос:
DECLARE @cols NVARCHAR(20000)
SELECT
ID,
DATEADD(hour, DATEDIFF(hour, '00:00:00', InsertDate), '00:00:00') as TruncatedToHour,
sum(Value1) as data
INTO t3
FROM table1
WHERE Type = 'Data' AND InsertDate > '2019-04-28 00:00'
GROUP BY
ID,
DATEADD(hour, DATEDIFF(hour, '00:00:00', InsertDate), '00:00:00')
SELECT @cols = LIST(DISTINCT cast(TruncatedToHour as nvarchar(1000)), ', ') FROM t3
Этот запрос возвращает все необходимые данные (но не отформатирован должным образом) и динамически создает имена столбцов для необходимой структуры таблицы (@cols).Теперь мне нужно создать необходимую структуру таблицы и заполнить ее правильными данными.Кто-нибудь может помочь?