2012-06-09 105 views
0

我需要的列数据转换成单排多列转换具有多个行单列成具有多个列

实施例的单排 - I创建的临时表加载数据的列

CREATE TABLE TestC (Comments Char(100), Row_Count [int] IDENTITY(1,1)) 

INSERT INTO TestC VALUES('A'),('B'),('C'),('D') 

Select Min(Case When Row_Count = 1 Then Comments End) As Comments 
, Min(Case When Row_Count = 2 Then Comments End) As Comments 
, Min(Case When Row_Count = 3 Then Comments End) As Comments 
, Min(Case When Row_Count = 4 Then Comments End) As Comments 
, Min(Case When Row_Count = 5 Then Comments End) As Comments 
, Min(Case When Row_Count = 6 Then Comments End) AS Comments 
, Min(Case When Row_Count = 7 Then Comments End) AS Comments 
FROM TestC 

Result

我试图使它动态查询,下面是代码片段,我尝试了目前

DECLARE @sql AS NVARCHAR (MAX); 
SELECT @sql = ' SELECT Min (CASE WHEN [Row_Count] =' + CAST ([Row_Count] AS CHAR(5)) + 
' THEN [Comments] END) AS Comments' 
FROM  [dbo].[TestC]; 
SET @sql = @sql + N' FROM [dbo].[TestC] '; 
PRINT @sql 
EXECUTE sp_executesql @sql; 

这仍然需要一些调整。感谢您的帮助..

+0

如果我得到它的权利,你想将行转换成列, 那么为什么不简单地交叉表明它..! –

+0

是的。你只需要将行转换为列。让我尝试跨标签 – Siva

回答

1

可以使用旋转的查询,如下面:

SELECT Pvt.* 
FROM (
    SELECT * 
    FROM TestC 
    )AS P 
PIVOT (MIN(Comments) FOR Row_Count IN ([1],[2],[3],[4],[5],[6],[7]))Pvt 

编辑: 您可以参考以下链接:

Dynamic Pivot Link 1

Dynamic Pivot Link 2

Dynamic Pivot Link 3

+0

这需要实际上是动态的。这里的答案是硬编码 – Siva

+0

请看我的编辑。 –

+0

好工作谢谢.... – Siva