这些数据可以按我想要的方式转动吗?

时间:2013-07-30 12:18:52

标签: sql-server sql-server-2008 tsql

我的数据如下:

enter image description here

我想将此转换为包含以下列的单行:

    SubId,
    Zone1ReadTime,
    Zone1ChamberPressure
    Zone1ChamberTemperature,
    Zone2ReadTime,
    Zone2ChamberPressure
    Zone2ChamberTemperature,
etc...

基本上,对于特定SubId的20个区域中的每一个,我想创建一组20列。我已经使用了几次PIVOT功能,但实际上并不知道如何处理它。

1 个答案:

答案 0 :(得分:1)

SQL Fiddle

<强>查询

create table #demo (SubId int,zone int,ReadTime datetime,ChamberPressure float,ChamberTemp float)

insert into #demo (SubId ,zone ,ReadTime ,ChamberPressure ,ChamberTemp )
values
(1,1,GETDATE(),0.133156,98.4),
(1,2,GETDATE()+1,0.13435,76.4),
(1,3,GETDATE()+2,0.62346,3.4),
(1,4,GETDATE()+3,0.63426,34.4),
(1,5,GETDATE()+4,0.76457,43.4)


select  * from 
    (select  SubId
        --,zone 
        ,case 
            when COL='ReadTime' then 'Zone'+ CAST(zone as varchar) + 'ReadTime'
            when COL='ChamberPressure' then 'Zone'+ CAST(zone as varchar) + 'ChamberPressure'
            when COL='ChamberTemp' then 'Zone'+ CAST(zone as varchar) + 'ChamberTemp'
        end New_Col,    
            Value
        from (select SubId
                    ,zone
                    ,CAST(ReadTime as varchar) ReadTime
                    ,CAST(ChamberPressure as varchar) ChamberPressure
                    ,CAST(ChamberTemp as varchar) ChamberTemp 
                    from #demo
             )a

        UNPIVOT
        (
            Value
            for COL in ([ReadTime],[ChamberPressure],[ChamberTemp])
        )UPVT
    )b
pivot
(
  MAX(Value)
  for New_Col in (Zone1ReadTime,Zone1ChamberPressure,Zone1ChamberTemp
                 ,Zone2ReadTime,Zone2ChamberPressure,Zone2ChamberTemp
                 ,Zone3ReadTime,Zone3ChamberPressure,Zone3ChamberTemp
                 ,Zone4ReadTime,Zone4ChamberPressure,Zone4ChamberTemp
                 ,Zone5ReadTime,Zone5ChamberPressure,Zone5ChamberTemp)
) PVT   


drop table #demo

<强> Results

| SUBID |       ZONE1READTIME | ZONE1CHAMBERPRESSURE | ZONE1CHAMBERTEMP |       ZONE2READTIME | ZONE2CHAMBERPRESSURE | ZONE2CHAMBERTEMP |       ZONE3READTIME | ZONE3CHAMBERPRESSURE | ZONE3CHAMBERTEMP |       ZONE4READTIME | ZONE4CHAMBERPRESSURE | ZONE4CHAMBERTEMP |       ZONE5READTIME | ZONE5CHAMBERPRESSURE | ZONE5CHAMBERTEMP |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|     1 | Aug  1 2013  5:50AM |             0.133156 |             98.4 | Aug  2 2013  5:50AM |              0.13435 |             76.4 | Aug  3 2013  5:50AM |              0.62346 |              3.4 | Aug  4 2013  5:50AM |              0.63426 |             34.4 | Aug  5 2013  5:50AM |              0.76457 |             43.4 |

您可能需要cast结果为datetype