2016-02-05 196 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  | 
+----+------------+--------+-------------------+-------------+