SQL可能的枢轴

时间:2014-05-20 09:15:39

标签: sql sql-server-2008 pivot

有一段时间了,我一直在努力教自己在SQL中转向,但我需要的是我不能做的。

我需要它来查看ID然后为代码类型创建列并排序然后给它代码。

当前声明:

Select ID, CodeType, Sort, Code 
From Coding

我有什么:

ID      | CodeType  | Sort  | Code
78422   | DIAN      | 1     | Q123
78422   | DIAN      | 2     | P223
78422   | DIAN      | 3     | F323
78422   | PROE      | 1     | D423
78422   | PROE      | 2     | I124
13478   | DIAN      | 1     | P224
13478   | DIAN      | 2     | B324
13478   | DIAN      | 3     | Q424
13478   | DIAN      | 4     | A125
13478   | PROE      | 1     | P225
13478   | PROE      | 2     | Y325
13478   | PROE      | 3     | E425

我需要什么:

ID      | DIAN1 | DIAN2 | DIAN3 | DIAN4 | PROE1 | PROE2 | PROE3
78422   | Q123  | P223  | F323  | NULL  | D423  | I124  | NULL
13478   | P224  | B324  | Q424  | A125  | P225  | Y325  | E425

我是MS SQL Server Management Studio

1 个答案:

答案 0 :(得分:0)

我尝试了以下内容。

Fiddler Demo:

http://sqlfiddle.com/#!6/4a381/2

<强>查询:

Declare @columns varchar(max)

select @columns = STUFF((Select distinct ','+CodeType + cast(Sort as varchar(2)) from DataInfo
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

Print @columns

Declare @qry nvarchar(max)

set @qry = 'Select * from
(
Select id,Code,CodeType + cast(Sort as varchar(2)) as OrderInfo from DataInfo
)
as t
PIVOT
(
    MAX(Code)
    FOR OrderInfo in ('+@columns+')
) as P;'

print @qry

execute sp_executesql  @qry

希望它有所帮助!