17,377
社区成员
发帖
与我相关
我的任务
分享
SELECT '20171120' dtime , 'SQM711LM01' dev , 1 temperature INTO #temp
UNION ALL SELECT '20171120' dtime , 'SQM711LM02' dev , 2 temperature
UNION ALL SELECT '20171120' dtime , 'SQM711LM03' dev , 3 temperature
UNION ALL SELECT '20171121' dtime , 'SQM711LM01' dev , 4 temperature
UNION ALL SELECT '20171121' dtime , 'SQM711LM02' dev , 5 temperature
UNION ALL SELECT '20171121' dtime , 'SQM711LM03' dev , 6 temperature
UNION ALL SELECT '20171122' dtime , 'SQM711LM01' dev , 7 temperature
UNION ALL SELECT '20171122' dtime , 'SQM711LM02' dev , 8 temperature
UNION ALL SELECT '20171123' dtime , 'SQM711LM08' dev , 9 temperature
UNION ALL SELECT '20171123' dtime , 'SQM711LM09' dev , 10 temperature;
DECLARE @devs VARCHAR(max)
SELECT @devs= STUFF((SELECT DISTINCT ','+ dev FROM #temp FOR XML PATH('')),1,1,'')
EXEC ('SELECT * FROM ( SELECT dtime , temperature , dev FROM #temp ) AS s PIVOT ( MAX(temperature) FOR dev IN ('+ @devs +' ) ) AS b')
--1.创建测试表
create table tmp as
select '20171120' dtime, 'SQM711LM01' dev, 1 temperature from dual union all
select '20171120' dtime, 'SQM711LM02' dev, 2 temperature from dual union all
select '20171120' dtime, 'SQM711LM03' dev, 3 temperature from dual union all
select '20171121' dtime, 'SQM711LM01' dev, 4 temperature from dual union all
select '20171121' dtime, 'SQM711LM02' dev, 5 temperature from dual union all
select '20171121' dtime, 'SQM711LM03' dev, 6 temperature from dual union all
select '20171122' dtime, 'SQM711LM01' dev, 7 temperature from dual union all
select '20171122' dtime, 'SQM711LM02' dev, 8 temperature from dual union all
select '20171123' dtime, 'SQM711LM08' dev, 9 temperature from dual union all
select '20171123' dtime, 'SQM711LM09' dev, 10 temperature from dual;
--2.SQL实现
select dtime,
max(decode(dev,'SQM711LM01',temperature,null)) as "设备1温度",
max(decode(dev,'SQM711LM02',temperature,null)) as "设备2温度",
max(decode(dev,'SQM711LM03',temperature,null)) as "设备3温度",
max(decode(dev,'SQM711LM08',temperature,null)) as "设备8温度",
max(decode(dev,'SQM711LM09',temperature,null)) as "设备9温度"
from tmp
group by dtime
order by dtime