SQL Pivot работает неправильно, что я делаю не так?

Здравствуйте,

SQL Pivot работает не так как задумывал и я не могу найти проблему. Возможно вы сможете помочь.
Ситуация:
Есть база данных скажем опросника. Мне нужные 3 колонки это Человек, Вопрос и Ответ (конечно колонок намного больше).
Хранится все это в таком виде:

Человек 1, Вопрос 1, Ответ на вопрос 1
Человек 1, Вопрос 2, Ответ на вопрос 2
Человек 1, Вопрос 3, Ответ на вопрос 3
Человек 2, Вопрос 1, Ответ на вопрос 1
Человек 2, Вопрос 2, Ответ на вопрос 2

{ProcedureId, TokenValue, HtmlValue]
и тд.
Вот так:
5d84b3b02f118313980847.png

Я пытаюсь модифицировать SQL query и отобразить в Excel 2007 (есть необходимость именно в это версии, на других реализовано просто с power query)

Select ProcedureId, [3_1_explain_alert_system_and_boosters_required], [1_1_patient_blacklist_checked]
FROM 
(
    select * from ProcedureStepsDetails
) As Temp
PIVOT
(
    max([HtmlValue]) 
    FOR [TokenValue] In([3_1_explain_alert_system_and_boosters_required], [1_1_patient_blacklist_checked])
) As pt

По коду - [3_1_explain_alert_system_and_boosters_required], [1_1_patient_blacklist_checked] это айди вопросов.

Данный код относительно работает, но он я думал что он будет отображать человек как 1 единицу, вот так:
Человек * Вопрос 1 * Вопрос 2 * Вопрос 3
Человек1  Ответ 1    Ответ 2    Ответ 3
Человек2  Ответ 1    null       Ответ 3

а он

Человек * Вопрос 1 * Вопрос 2 * Вопрос 3
Человек1  Ответ 1    null       null
Человек1  null       null       null
Человек1  null       null       Ответ 3
Человек1  null       null       null
Человек1  null       null       null


Что мне нужно поменять в данном SQL Query?
Уже долго мучаюсь, не могу понять причину.
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
unfilled
@unfilled
Select ProcedureId, [3_1_explain_alert_system_and_boosters_required], [1_1_patient_blacklist_checked]
FROM 
(
    select ProcedureId, HtmlValue, TokenValue from ProcedureStepsDetails
) As Temp
PIVOT
(
    max([HtmlValue]) 
    FOR [TokenValue] In([3_1_explain_alert_system_and_boosters_required], [1_1_patient_blacklist_checked])
) As pt

а так?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы