T-SQL数据透视排序顺序

时间:2018-06-06 19:00:52

标签: sql sql-server tsql pivot

我有一个表格,其中包含按排序顺序排序的联系信息,然后在列中下移。

联系人表: enter image description here

我需要创建一个表,其中紧急联系信息按列而不是行排序:

enter image description here

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您的dyanmic pivot查询应该与此 demo

一样
declare @cols nvarchar(max);


declare @query nvarchar(max);


select 
    sourceId,
    patientId,
    data,
    cols= concat(col,sortOrder)
into #t
from
    Contacts
    UNPIVOT
    (
    data for col in 
        (
            personalContactType_MisContactTypeId,
            personalContactNameLast,
            personalContactNameFirst
        )
    )up


select @cols= stuff((
                   select distinct  ','+ quotename(cols)
                   from #t 
                   for xml path('')),1,1,'')
select @cols

select @query= 'select * from #t
pivot
( max(data) for cols in ('+@cols+
'))p'

exec (@query)

答案 1 :(得分:0)

dynamic pivot中,在创建列列表时使用val进行ORDER BY。