2016-02-05 155 views
-1

我需要關於TSQL Pivot的幫助並獲取錯誤。任何幫助是極大的讚賞。 以下是查詢和數據。TSQL樞軸查詢

DECLARE @cols AS VARCHAR(8000), 
    @query AS VARCHAR(8000) 

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.steps) 
      FROM Tableabc AS c 
      FOR XML PATH(''), TYPE 
      ).value('.', 'VARCHAR(8000)') 
     ,1,1,'') 
--print @cols 
set @query = 'SELECT name, ElapsedTime_Sec,' + @cols + ' from 
      (
       select name,ElapsedTime_Sec 

       FROM Tableabc 
      ) x 
      pivot 
      (
       max(steps) 
       for ElapsedTime_Sec in (' + @cols + ') 
      ) p ' 


execute(@query) 

表信息:

Table Info

+1

「獲得錯誤」 實在是沒有幫助這裏。你遇到了什麼錯誤?爲了讓其他人輕鬆做到這一點,任何努力都會從其他人得到實際幫助中獲益。將數據圖像轉換爲實際表格(創建語句和插入)將是朝着正確方向邁出的巨大一步。 –

+0

這是我第一篇文章,需要幫助將圖像轉換爲實際表格。我得到的錯誤是針對@cols的值之一 消息102,級別15,狀態1,行14 「觸摸/染色」附近的語法不正確。 – user5889117

+1

您不能在常規列名中使用/。您需要在其周圍放置方括號,如[Touch/Stain] – Jeremy

回答

0

沒有任何預期輸出和一個錯誤的PIVOT查詢,我只是猜測,以你想要的東西。但是這是一個基於你的問題鬆散的腳本。我猜這不是你想要的輸出,但你可以從這個腳本開始工作,也許可以把它變成你需要的東西。

CREATE TABLE #Tableabc(ID INT,name VARCHAR(256), Steps VARCHAR(1024),ElapsedTime_Sec INT); 

INSERT INTO #Tableabc(ID,name,Steps,ElapsedTime_Sec)VALUES 
    (2,'Features','Touch/Stain',25), 
    (29,'Shipping','Step requiring QA',129), 
    (47,'Behavioral','Gloves',8); 

DECLARE @cols AS VARCHAR(8000), 
    @query AS VARCHAR(8000); 

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.steps) 
      FROM #Tableabc AS c 
      FOR XML PATH(''), TYPE 
      ).value('.', 'VARCHAR(8000)') 
     ,1,1,'') 

set @query = 'SELECT * FROM #Tableabc 
      pivot 
      (
       max(ElapsedTime_Sec) 
       for Steps in (' + @cols + ') 
      ) p '; 
execute(@query); 

DROP TABLE #Tableabc; 

輸出:

+----+------------+--------+-------------------+-------------+ 
| ID | name | Gloves | Step requiring QA | Touch/Stain | 
+----+------------+--------+-------------------+-------------+ 
| 47 | Behavioral | 8  | NULL    | NULL  | 
| 2 | Features | NULL | NULL    | 25   | 
| 29 | Shipping | NULL | 129    | NULL  | 
+----+------------+--------+-------------------+-------------+