SQL两列数据,行转列

时间:2023-01-19 17:03:24

SQL中只有两列数据(字段1,字段2),将其相同字段1的行转列

转换前:

SQL两列数据,行转列

转换后:

SQL两列数据,行转列

--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([MDF_LOT_NO] int,[ERP_MODE_CD] int)
Insert #T
select 1017111,5 union all
select 1017111,41 union all
select 1128011,41 union all
select 1128011,26
Go
--测试数据结束
DECLARE @name VARCHAR(max),@sql VARCHAR(max)
;WITH cte AS (
SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY MDF_LOT_NO ORDER BY GETDATE() ) AS rn
FROM #T
)
SELECT @name =stuff((SELECT DISTINCT ',['+RTRIM(rn)+']' from cte for xml PATH('')),1,1,'')
SET @sql =';WITH cte AS (
SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY MDF_LOT_NO ORDER BY GETDATE() ) AS rn
FROM #T
)'
set @sql =@sql+'SELECT * from cte pivot(max([ERP_MODE_CD])for rn in('+@name+'))a'
PRINT @sql
EXEC( @sql)

转自:https://bbs.csdn.net/topics/392320974