需要输入SQL Pivot查询

时间:2014-06-02 23:17:16

标签: sql sql-server sql-server-2008 pivot pivot-table

需要输入sql查询。我见过例子,但所有例子都使用了聚合函数,因此发布了问题..

我的表看起来像

Values          ID      Name
59.781437   7053    263
16.478765   7053    264
38.950151   7054    263
72.01498    7054    264

我想生成如下数据(有或没有支点)

ID   263       264
7053 59.781437 16.478765
7054 38.950151 72.01498

1 个答案:

答案 0 :(得分:2)

尝试此查询 -

select * from
(
select * from MyTable
) as src
pivot(
sum([values])
for Name in ([263], [264])
) as pvt

当“名称”列可以包含未指定数量的值时,请改为使用 -

create table ##tmp(
name varchar(50) null
)
insert into ##tmp
select distinct name from mytable

DECLARE @result nvarchar(max)
SET @result = ''

SELECT @result = @result + '[' + cast([name] as varchar(50)) + N'],'
FROM [##tmp]

SET @result = LEFT(@result, LEN(@result) - 1)

--PRINT @result 

declare @sql varchar(max) = ''
SET @sql = 
'select * from' + 
'(
select * from MyTable
) as src
pivot(
sum([values])
for Name in (' + @result + ')' +
+ ') as pvt'

exec (@sql)

drop table ##tmp

关键点 - 我们使用简单查询来进行上述查询。然后,我们使用动态sql执行上面的查询。