如何在 SQL Server 2008+ 中以行数为中心

how to pivot on number of rows in SQL Server 2008+

我知道已经有很多围绕 pivot 的问题,但我找不到任何与我正在尝试做的类似的事情。它甚至可能不是枢轴功能。

我有一个 table 有两个核心列:

ID_no | 项目

它们是这样设置的:

我想让项目编号按顺序列为列。所以基本上对于 000998571 我需要将列列为:

23456 | 31462 | 31234 | 2 |我

而且每个项目都有自己的专栏。我一直在到处寻找类似的布局,但找不到适合我的情况的任何东西。非常感谢任何帮助。

编辑:关于我试图获得的结果的更多说明:

试试这个:

DECLARE @t TABLE
    (
      ID_NO NVARCHAR(MAX) ,
      Items NVARCHAR(MAX)
    )

INSERT  INTO @t
VALUES  ( '000998571', '23456' ),
        ( '000998571', '31462' ),
        ( '000998571', '31234' ),
        ( '000998571', '2' ),
        ( '000998571', '1' ),
        ( '000998582', '10701' ),
        ( '000998582', '414214' ),
        ( '000998582', '75404' ),
        ( '000998582', '2' ),
        ( '000998582', 'A' )


SELECT  ID_NO ,
        [1] AS Item1 ,
        [2] AS Item2 ,
        [3] AS Item3 ,
        [4] AS Item4 ,
        [5] AS Item5
FROM    ( SELECT    * ,
                    ROW_NUMBER() OVER ( PARTITION BY ID_NO ORDER BY Items ) AS rn
          FROM      @t
        ) t PIVOT( MAX(Items) FOR rn IN ( [1], [2], [3], [4], [5] ) ) p

输出:

ID_NO       Item1   Item2   Item3   Item4   Item5
000998571   1       2       23456   31234   31462
000998582   10701   2       414214  75404   A