2013-04-25 40 views
0

我輸入的是:移調行的列沒有聚集和顯示的列標題的第一列在SQL Server 2008

date  Costed Celldata 
8-Apr-13 1  15 
15-Apr-13 1  24 
22-Apr-13 1  36 

我需要輸出爲:

date  8-Apr-13 15-Apr-13 22-Apr-13 
Costed  1   1   1   
Celldata  15   24   36   

查詢我申請的是:

CREATE TABLE testing1(Spot_dt date, Costed INT, celldata INT) 

INSERT INTO testing1 (Spot_dt,Costed,celldata) values ('2012-04-08',1,15); 
INSERT INTO testing1 (Spot_dt,Costed,celldata) values ('2012-04-15',1,24); 
INSERT INTO testing1 (Spot_dt,Costed,celldata) values ('2012-04-22',1,36); 


DECLARE @cols AS NVARCHAR(MAX), 
    @query AS NVARCHAR(MAX) 

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Spot_dt) 
        from testing1 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

set @query = 'SELECT Costed,' + @cols + ' 
      from 
      (
       select Spot_dt, Costed, CellData 
       from testing1 
      ) x 
      pivot 
      (
       min(CellData) 
       for Spot_dt in (' + @cols + ') 
      ) p ' 

execute(@query) 

專家把我recieving是:

8-Apr-13 15-Apr-13 22-Apr-13 
1   1   1   
15   24   36   

所以基本上我需要一個額外的列在開始時我可以有列標題來作爲行值。

+0

可能的重複http://stackoverflow.com/questions/428041/sql-server-2005-turn-columns-into-rows和可能還有更多。請在發佈問題之前進行搜索。 – 2013-04-25 07:24:23

+0

您提供的代碼中的數據與問題開始時輸入數據表中的數據不匹配 - 特別是,代碼中沒有未加密的數據。另外,你說你想要的輸出與你所說的輸出(它與你提供的代碼的輸出不匹配)完全匹配。請你能澄清你的問題嗎? – 2013-04-25 07:29:20

+0

嗨@MarkBannister,謝謝你的qucik回覆。我發佈了正確的數據和立即查詢。等待你的答覆。我主要關心的是我需要輸出的第一列。第一個表的列標題應該作爲行值。就像我們在EXCEL中做簡單的轉置一樣。 – Panwar 2013-04-25 07:44:27

回答

0

下面應該工作:

DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) 

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Spot_dt) 
        from testing1 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

set @query = 'SELECT valtype dates, ' + @cols + ' 
       from (select Spot_dt, Costed, CellData from testing1) as x 
       unpivot (vals for valtype in (Costed, celldata)) as u 
       pivot (min(vals) for spot_dt in (' + @cols + ')) as p' 

execute(@query) 

(旋轉各地最新數據之前,你需要unpivot的單獨的列,以便在您的初始數據集的每一列都有自己的行每個日期。)

SQLFiddle here

+0

非常感謝。有效。 :) – Panwar 2013-04-25 08:41:45

+0

@Panwar:很高興我能幫忙。 :) – 2013-04-25 08:52:17

相關問題