Я пытаюсь создать сводный запрос для отображения данных ответа на опрос из базы данных.
Вот мой запрос на данный момент:
declare
@columns nvarchar(max) ='',
@sql nvarchar(max) = '',
@responseIDs nvarchar(max) = '';
select
@columns+=QUOTENAME(QuestionLabel) + ','
from
SurveyQuestions
where
SurveyID=1
order by
QuestionSort;
set @columns = LEFT(@columns, LEN(@columns)-1);
set @responseIDs = (select ResponseIDs from SurveyCart where SurveyCartID=7);
set @sql='
select * from (
select
QuestionLabel, ResponseAnswer, ResponseID, AmountPaid =
(
IIF(QuestionTypeID=2 and ResponseAnswer=''Yes'', QuestionValue, 0) +
IIF(QuestionTypeID=6 and CAST(ResponseAnswer as int)>0, QuestionValue*Cast(ResponseAnswer as int), 0)
)
from
SurveyQuestions q
inner join SurveyResponseAnswers ra
on q.QuestionID=ra.QuestionID
where
ResponseID in (' + @responseIDs + ')
) t
pivot(
MAX(ResponseAnswer) for QuestionLabel in (' + @columns + ')
) as pivot_table;';
EXECUTE(@sql)
Вот результаты, которые я получаю
ResponseID AmountPaid Attending? Select Cost with Quantities
19 0.00 NULL Option 3 NULL
20 0.00 NULL Option 1
19 25.00 Yes NULL NULL
20 25.00 Yes NULL NULL
19 30.00 NULL NULL 3
Результаты, которые я хочу:
ResponseID AmountPaid Attending? Select Cost with Quantities
19 55.00 Yes Option 3 3
20 25.00 Yes Option 1
Я хочу, чтобы для каждого идентификатора ответа была только одна строка, и где были бы пустые места в Посещаемости и стоимости. С количествами мне нужны результаты изнижние строки и суммы, которые будут добавлены вместе на основе ResponseID.