2

我有一堆数据(每个唯一引用的多行)需要在一行中包含多列。一些需要使用的列必须进一步拆分,因为它们包含多个值。这是使用 unpivot 完成的。我现在有 1 个原始列中的 7 个列,它现在需要针对新的 7 个列显示状态。但是,我不能使用枢轴,因为我需要查看 7 列中的各种状态,而不是最小值、最大值或计数。

在此处输入图像描述

4

1 回答 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 回答