无法在SQL中透视数据

时间:2017-01-06 08:18:31

标签: sql sql-server-2008 pivot

我有一个像

这样的SQL查询
select name from customers where id in (1,2,3,4,5)

这将返回5行。 我正在尝试的是

select Q1,Q2,Q3,Q4,Q5  from(select name from customers where id in (1,2,3,4,5)  
)d pivot( max(name) for names in (Q1,Q2,Q3,Q4,Q5)
 ) piv;

将这5行转换为5列。

但我在列中得到空值。

enter image description here

我不知道我在哪里做错了。 任何形式的帮助,建议将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试这种方式,您正在转动名称并选择值下的名称,因此请首先确定是否存在该ID的值并检索您正在尝试转动的值:

create table #customers(id int, name varchar(50), fee int) 
insert into #customers values
(1, 'Q1', 100),
(2, 'Q2', 200),
(3, 'Q3', 300),
(4, 'Q4', 400),
(5, 'Q5', 500),
(6, 'Q5',  600),
(7, 'Q5',  700)

select Q1,Q2,Q3,Q4,Q5  
from(select name, fee from #customers where id in (1,2,3,4,5)  
)d pivot(SUM(fee) for name in (Q1,Q2,Q3,Q4,Q5)
 ) piv;

输出:

Q1  Q2  Q3  Q4  Q5
100 200 300 400 500

您希望在名称下显示哪个值,如果您提及,那么我们可以为此提供更准确的解决方案。希望您可以相应地更改您的代码。