У меня есть такая таблица:
datetime datacenter machines
---------------------------------------------------------
2020-05-13 12:00:00.000 DC01 500
2020-05-13 12:00:00.000 DC02 100
2020-04-10 13:00:00.000 DC01 510
2020-04-10 13:00:00.000 DC02 120
2020-03-1 14:00:00.000 DC01 530
2020-03-1 14:00:00.000 DC02 140
Столбец datetime имеет тип Datetime2
, остальные - VARCHAR
. Мне нужно создать новое представление, которое будет группировать записи по дате и времени и создавать столбцы из строк, которые имеют центры обработки данных dc01
и dc02
, и помещать номер. машин в соответствующих строках, по существу транспонируя и объединяя данные.
В исходной таблице всегда будет 2 записи для каждого datetime, по одной для каждого центра обработки данных, и при объединении datetime должно быть уникальным. Вот для иллюстрации полученного view
:
resulting_view
datetime dc01_machines dc02_machines
---------------------------------------------------------
2020-05-13 12:00:00.000 500 100
2020-04-10 13:00:00.000 510 120
2020-03-1 14:00:00.000 530 140
Я потратил некоторое время, пытаясь найти решения. На мой взгляд, у меня есть решение, которое состоит в том, чтобы сделать 2 отдельных выбора, по одному для каждого центра обработки данных, объединить их с помощью UNION, а затем просто сгруппировать их по дате и времени, но я уверен, что это ужасно, и он даже не работает, есть ошибка около invalid syntax near GROUP
. Вот попытка:
(SELECT t1.datetime
,t1.machines as dc01_machines
,'' as dc02_machines
FROM table1 t1
WHERE datacenter = 'DC01')
UNION
(SELECT t1.datetime
,'' as dc01_machines
,t1.machines as dc02_machines
FROM table1 t1
WHERE datacenter = 'DC02')
GROUP BY datetime
Спасибо, любая помощь приветствуется!