sql server中的表转置?

sql server中的表转置?,sql,sql-server-2008,Sql,Sql Server 2008,我试图编写sql代码来创建一个表,它是给定表的转置。最初,我有一个包含数据的表。我正在尝试使用SQLServerManagementStudio创建一个转换输入表的表 请帮帮我 输入如下: 输出: 尝试取消Pivot 像这样的事情可能会奏效: 测试数据 CREATE TABLE #tbl ( Y1 INT, Y2 INT, Y3 INT, Y4 INT, Y5 INT ) INSERT INTO

我试图编写sql代码来创建一个表,它是给定表的转置。最初,我有一个包含数据的表。我正在尝试使用SQLServerManagementStudio创建一个转换输入表的表

请帮帮我

输入如下:

输出:

尝试取消Pivot


像这样的事情可能会奏效:

测试数据

CREATE TABLE #tbl 
    (
        Y1 INT,
        Y2 INT,
        Y3 INT,
        Y4 INT,
        Y5 INT
    )

INSERT INTO #tbl
VALUES
    (1,2,3,4,9),
    (1,6,9,3,6),
    (2,2,6,7,6)
然后我们需要知道有多少个X列。这将获得以下列:

DECLARE @nbrOf INT=(SELECT COUNT(*) FROM #tbl)

DECLARE @cols VARCHAR(MAX)
DECLARE @colsWithName VARCHAR(MAX)

;WITH Nbrs ( n ) AS (
        SELECT 1 UNION ALL
        SELECT 1 + n FROM Nbrs WHERE n <@nbrOf )
SELECT
    @cols = COALESCE(@cols + ','+QUOTENAME(n),
                     QUOTENAME(n)),
    @colsWithName = COALESCE(@colsWithName + ','+QUOTENAME(n)+' AS X'+CAST(n AS VARCHAR(10)),
                     QUOTENAME(n)+' AS X'+CAST(n AS VARCHAR(10)))
FROM
    Nbrs
那么在我的情况下,我将删除临时表

DROP TABLE #tbl

谢谢你的快速回复。。。。。我不需要任何列名和所有。。。我所需要的只是转置给定表的数据。。。。。如果这就是pivot将要做的,你能试着为我的示例表解释一下吗…我是sqlBy转置的新手,你的意思是你想旋转你的表吗?我只想旋转表数据…如图所示,即,原始表中的第一行是tablePivot的第一列的数据,unpivot是正确的方法。据我所知,如果不知道列的数量和名称(这是pivot/unpivot所需要的),就无法使用SQL来完成此操作。您可以使用动态列进行透视。只要在谷歌搜索pivot和dynamic,你就会得到一些好结果。是第一个出现在我的面颊上的。我倾向于使用本文中所示的使用XML路径的示例。我觉得这个很好用。谢谢你的回复,但是我发现你的解决方案中有一些错误。如果列“Y1”的值的顺序不是升序,它将不起作用,因为它在Y1上使用了ROW_NUMBER()函数。这是真的。也许你有主键?因为这样我们就可以在订单中使用它了。我们需要有人来确定第一个和最后一个x值是什么。
DROP TABLE #tbl