无法在 SQL 中转换数据
Unable to pivot data in SQL
我有一个 SQL 查询,例如
select name from customers where id in (1,2,3,4,5)
这将 return 我 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 列。
但是我在列中得到空值。
我不知道我哪里做错了。
任何形式的帮助,建议将不胜感激。
谢谢
您可以尝试这种方式,您正在旋转名称并选择值下的名称,因此请首先确保该 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
您想在名称下显示什么值,如果您提到了,那么我们可以为此提供更准确的解决方案。希望您能相应地更改您的代码。
我有一个 SQL 查询,例如
select name from customers where id in (1,2,3,4,5)
这将 return 我 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 列。
但是我在列中得到空值。
我不知道我哪里做错了。 任何形式的帮助,建议将不胜感激。
谢谢
您可以尝试这种方式,您正在旋转名称并选择值下的名称,因此请首先确保该 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
您想在名称下显示什么值,如果您提到了,那么我们可以为此提供更准确的解决方案。希望您能相应地更改您的代码。