如何在 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
我知道已经有很多围绕 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