2013-07-30 43 views
0

我有一個看起來數據如下:這個數據可以按我想要的方式旋轉嗎?

enter image description here

我想將其轉換成單排有以下的列:

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

從本質上講,每個20個區爲一個特定的SubId,我想創建一個20列的集合。我幾次使用PIVOT函數,但不知道如何處理這個問題。

+0

如果你可以適應這個答案你的架構,它應該工作: http://stackoverflow.com/questions/15931607/convert-rows-to-columns-using-pivot-in-mssql –

+0

你有{ Reporting Services | SQL Server Express Edition w。高級服務}安裝?這個報告可以在{Report Builder | SSBIDS}中輕鬆完成。 –

+0

@ Hosea146:你找到答案了嗎?如果是的話,在這裏發佈。 –

回答

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

+0

@ Hosea146:這有幫助嗎? –

相關問題