【发布时间】:2020-05-23 15:53:58
【问题描述】:
我创建了下表来说明正在发生的事情
create table weather (
WDate varchar(10),
ItemCode varchar(8),
ItemValue int,
ItemUnits varchar(8))
insert into Weather values
('2020-02-10', 'MAXTEMP', 6, 'degC'),
('2020-02-10', 'MINTEMP', 2, 'degC'),
('2020-02-10', 'RAIN', 0, 'mm'),
('2020-02-11', 'MAXTEMP', 5, 'degC'),
('2020-02-11', 'RAIN', 20, 'mm'),
('2020-02-11', 'MINTEMP', 1, 'degC'),
('2020-02-12', 'RAIN', 5, 'mm'),
('2020-02-12', 'MAXTEMP', 8, 'degC'),
('2020-02-12', 'MINTEMP', 2, 'degC')
数据的顺序并不总是相同,因为它可能来自可能未进行时间同步的设备。当我运行以下查询时
SELECT
[wdate] as 'Date',
[MINTEMP] as 'Min Temp',
[MAXTEMP] as 'Max Temp',
[RAIN] as 'Rain'
FROM
(
SELECT
*
FROM
weather
) rawdata
PIVOT
(
min(ItemValue)
FOR ItemCode IN ([MINTEMP], [MAXTEMP], [RAIN])
) pitem
ORDER BY WDate
我明白了
WDate Min Temp Max Temp Rain
2020-02-10 2 6 NULL
2020-02-10 NULL NULL 0
2020-02-11 1 5 NULL
2020-02-11 NULL NULL 20
2020-02-12 2 8 NULL
2020-02-12 NULL NULL 5
我无法弄清楚为什么 Rain 数据没有与 Min 和 Max Temp 位于同一行。我期待
WDate Min Temp Max Temp Rain
2020-02-10 2 6 0
2020-02-11 1 5 20
2020-02-12 2 8 5
【问题讨论】:
标签: sql-server sql-server-2008 pivot