有一段时间了,我一直在努力教自己在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
答案 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
希望它有所帮助!