2017-01-06 5 views
0

У меня есть SQL-запрос, какНевозможно свести данные в 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

Я не знаю, где я делаю неправильно. Любая помощь, предложение было бы оценено.

Благодаря

+0

Я использую MSSQL –

+0

, у вас есть возможная синтаксическая ошибка 'для имен в' столбцах 'names' не находится в вашем' select', если после этого вы получаете нулевые значения, то у вас нет имен в 'customers' с 'id in (1,2,3,4,5)' и 'name in (Q1, Q2, Q3, Q4, Q5)' – JamieD77

+0

Фактические значения 'Q1, Q2, Q3, Q4, Q5' для' name' в таблице 'customer'? Если это не так, вы получите только значения null для значений. –

ответ

1

Вы можете попробовать таким образом, вы поворотное имя и выбрав имя под значением и поэтому, пожалуйста, сначала сделать обязательно, если есть значение этого идентификаторы и получить значение, для которого вы пытаясь поворотное:

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 

что соответствующее значение, которое вы хотите отобразить под именем, если вы говорите, что мы можем обеспечить более точное решение для этого. Надеюсь, вы можете изменить свой код соответственно.

+0

Спасибо человеку за быстрый ответ :) –

Смежные вопросы