我有一个如下的表格:
时间戳列为
在源表中,每个时间戳会有两条记录,一条记录来自于一个数据中心。当数据合并后,时间戳应该是唯一的。以下是所得到的
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
时间戳列为
Datetime2
类型,其余为 VARCHAR
。需要创建一个新视图,按时间戳分组,并从具有 dc01
和 dc02
数据中心行中提取列,将各自行的机器数量放入相应的列中,最终对数据进行转置和合并。在源表中,每个时间戳会有两条记录,一条记录来自于一个数据中心。当数据合并后,时间戳应该是唯一的。以下是所得到的
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
我花了一些时间来寻找解决方案。
在我看来,解决方案是进行两个单独的查询,一个用于每个数据中心,用 UNION 将它们组合起来,然后只需按日期时间进行分组,但我肯定这很糟糕,并且它甚至不能运行,存在一个关于“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
谢谢,感激任何帮助!