Sql server 数据透视表中的行未合并
我创建了下表来说明正在发生的事情Sql server 数据透视表中的行未合并,sql-server,sql-server-2008,pivot,Sql Server,Sql Server 2008,Pivot,我创建了下表来说明正在发生的事情 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'),
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 0
2020-02-11 1 5 20
2020-02-12 2 8 5
必须以最少的列数“馈送”轴。请注意,子选择rawdata
示例
SELECT
[wdate] as 'Date',
[MINTEMP] as 'Min Temp',
[MAXTEMP] as 'Max Temp',
[RAIN] as 'Rain'
FROM
(
Select WDate
,ItemCode
,ItemValue
from Weather
) rawdata
PIVOT
(
min(ItemValue)
FOR ItemCode IN ([MINTEMP], [MAXTEMP], [RAIN])
) pitem
ORDER BY WDate
返回
Date Min Temp Max Temp Rain
2020-02-10 2 6 0
2020-02-11 1 5 20
2020-02-12 2 8 5
我打算就项目单位提出一个单独的问题。所以基本上我应该指定我正在使用的列,而忽略我没有使用的列。@cup BINGO!!你明白了:)
Date Min Temp Max Temp Rain
2020-02-10 2 6 0
2020-02-11 1 5 20
2020-02-12 2 8 5