我有一个像
这样的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列。
但我在列中得到空值。
我不知道我在哪里做错了。 任何形式的帮助,建议将不胜感激。
由于
答案 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
您希望在名称下显示哪个值,如果您提及,那么我们可以为此提供更准确的解决方案。希望您可以相应地更改您的代码。