表结构如下:
FNumber FSeries FItemID
M.QZ.AM.TL.00001 内牙 2010
B.QZ.AM.TL.00024 内牙 2010
B.QT.AM.TL.00022 内牙 2010
P.BJ.PL.00008 平螺母 2010
P.CY.QW.00001 球碗 2010
P.CY.QW.00002 球碗 2010
P.CY.SG.00054 内牙 2011
须要进行特殊行转列,如果如下:
内牙 球碗 平螺母 FItemID
M.QZ.AM.TL.00001 P.CY.QW.00001 P.BJ.PL.00008 2010
B.QZ.AM.TL.00024 P.CY.QW.00002 2010
B.QT.AM.TL.00022 2010
P.CY.SG.00054 2011
不知有何种方法可以实现
@DBA_Huangzj 昨天大神给出的方法试了试,自己无法把ID套进去,求解
------解决方案--------------------
WITH test(FNumber,FSeries,FItemID)
AS
(
SELECT 'M.QZ.AM.TL.00001',N'内牙','2010' UNION ALL
SELECT 'B.QZ.AM.TL.00024',N'内牙','2010' UNION ALL
SELECT 'B.QT.AM.TL.00022',N'内牙','2010' UNION ALL
SELECT 'P.BJ.PL.00008',N'平螺母','2010' UNION ALL
SELECT 'P.CY.QW.00001',N'球碗','2010' UNION ALL
SELECT 'P.CY.QW.00002',N'球碗','2010' UNION ALL
SELECT 'P.CY.SG.00054',N'内牙','2011'
)
,test1 AS
(
SELECT ROW_NUMBER() OVER(PARTITION BY FSeries ORDER BY GETDATE()) AS ID
,*
FROM test
)
--SELECT * FROM test1
SELECT [内牙],[球碗],[平螺母],FItemID
FROM test1 AS A
PIVOT (MAX(FNumber) FOR FSeries IN([内牙],[球碗],[平螺母]))p