2016-11-16 2 views
0

У меня есть набор данных, который представляет, как люди оценивают различные черты. Я пытаюсь свернуть данные двумя столбцами, однако данные столбца содержатся под одним столбцом с отдельным столбцом, действующим как дискриминатор.SQL Pivot, когда данные столбца находятся в одном столбце с столбцом дискриминатора

Вот сценарий. Людям дали список из трех признаков и попросили оценить их в порядке важности для них. Каждому из них было дано два списка по трем признакам, и они просили ранжировать каждый список от 1 до 3, от самого важного до наименее важного.

+----------+-------+----------------+---------------+------+ 
| RecordNo | Name | QuestionNumber | QuestionGroup | Rank | 
+----------+-------+----------------+---------------+------+ 
|  1 | Bob |  1  |  1  | 2 | 
|  2 | Bob |  2  |  1  | 1 | 
|  3 | Bob |  3  |  1  | 3 | 
|  4 | Bob |  1  |  2  | 1 | 
|  5 | Bob |  2  |  2  | 2 | 
|  6 | Bob |  3  |  2  | 3 | 
|  7 | Sally |  1  |  1  | 3 | 
|  8 | Sally |  2  |  1  | 2 | 
|  9 | Sally |  3  |  1  | 1 | 
| 10 | Sally |  1  |  2  | 1 | 
| 11 | Sally |  2  |  2  | 3 | 
| 12 | Sally |  3  |  2  | 2 | 
+----------+-------+----------------+---------------+------+ 

То, что я хотел бы в конечном итоге с является PIVOT данных, так это выглядит ..

+----------+-------+-----------+-----------+-----------+------------+------------+------------+ 
| RecordNo | Name | Question1 | Question2 | Question3 | Question 1 | Question 2 | Question 3 | 
|   |  | Group 1 | Group 1 | Group 1 | Group 2 | Group 2 | Group 2 | 
+----------+-------+-----------+-----------+-----------+------------+------------+------------+ 
|  1 | Bob |  2  |  1  |  3  |  1  |  2  |  3  | 
|  2 | Sally |  3  |  2  |  1  |  1  |  3  |  2  | 
+----------+-------+-----------+-----------+-----------+------------+------------+------------+ 

Я знаю, как сделать Pivot на несколько столбцов great article on it here, но то, что я не могу выяснить, как выполнить поворот, когда данные находятся в одном столбце (QuestionNumber), разделенном столбцом дискриминатора (QuestionGroup).

Я также создал интернет-таблицу here

ответ

2

Я думаю, что самый простой способ для поворота условно агрегация:

select name, 
     max(case when questiongroup = 1 and questionnumber = 1 then rank end) as q_1_1, 
     max(case when questiongroup = 1 and questionnumber = 2 then rank end) as q_1_2, 
     max(case when questiongroup = 1 and questionnumber = 3 then rank end) as q_1_3, 
     max(case when questiongroup = 2 and questionnumber = 1 then rank end) as q_2_1, 
     max(case when questiongroup = 2 and questionnumber = 2 then rank end) as q_2_2, 
     max(case when questiongroup = 2 and questionnumber = 3 then rank end) as q_2_3 
from t 
group by name; 
+0

Я думаю, что я получил так втянутым в PIVOT ключевое слово, я забыл, чтобы вернуться к основам , – webworm

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

  • Нет связанных вопросов^_^