行转列时如何自动产生列名
不知道大家有没有研究过这个问题,如下:
table1
LocationCode CodeDetail
A02b 字段1
A02b 字段2
A02b 字段3
A02b 字段4
A02b 字段5
我在行转列的时候有如下语句:
pivot(max(Tallydata) for Tallyfield in (字段1,字段2,字段3,字段4,字段5)) as X
在存储过程或直接用sql语句是否可以依据table1里面的LocationCode字段的值直接自动写出
字段1,字段2,字段3,字段4,字段5 这样的格式
[最优解释]
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT @s = @s + ',' + QUOTENAME(CodeDetail) + '=max(case when [CodeDetail]='
+ QUOTENAME(CodeDetail, '''') + ' then [CodeDetail] else ''0'' end)'
FROM table1
GROUP BY LocationCode
EXEC('select [LocationCode]'+@s+' from table1 group by [LocationCode]')
SELECT a.LocationCode ,
STUFF(( SELECT ',' + CodeDetail
FROM table1 b
WHERE b.LocationCode = a.LocationCode
FOR
XML PATH('')
), 1, 1, '') 'CodeDetail'
FROM table1 a
GROUP BY LocationCode
select top 1我自己写的,谢谢二位
STUFF(
(
SELECT (case CodeDetail when '' then '' else (CodeDetail + ',') end) FROM WLRS_Locational_Detail where locationcode=@locationcode
FOR XML PATH('')
),1,0,'') CodeDetail
from WLRS_Locational_Detail T