我有一堆数据(每个唯一引用的多行)需要在一行中包含多列。一些需要使用的列必须进一步拆分,因为它们包含多个值。这是使用 unpivot 完成的。我现在有 1 个原始列中的 7 个列,它现在需要针对新的 7 个列显示状态。但是,我不能使用枢轴,因为我需要查看 7 列中的各种状态,而不是最小值、最大值或计数。
问问题
5446 次
1 回答
3
您可以使用PIVOT功能执行这种类型的班次。
静态数据透视(参见SQL Fiddle 的演示):
select *
from
(
select reference, jobtypesplit, status
from t1
) x
pivot
(
min(status)
for jobtypesplit in ([DDS], [MBN], [LPN], [WEN], [LLP], [OPE], [SSE])
) p
这也可以动态完成(参见SQL Fiddle)
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(jobtypesplit)
FROM t1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT reference, ' + @cols + ' from
(
select reference, jobtypesplit, status
from t1
) x
pivot
(
min(status)
for jobtypesplit in (' + @cols + ')
) p '
execute(@query)
于 2012-06-13T09:24:48.633 回答