Итак, я работаю над тем, чтобы сообщить некоторые данные из таблицы, которая отслеживает реакцию пациентов на вопросы о боли в груди, когда они посещают отделение неотложной помощи. Когда пациенты прибывают в ER, им задают ряд вопросов, касающихся их боли в груди. По каждому вопросу их просят оценить боль от 1 до 10. Ниже приведены данные, поскольку они хранятся в таблице.Имена столбцов префикса при использовании динамического Pivot
+-----------+------------+----------+
| PatientId | QuestionId | PainRank |
+-----------+------------+----------+
| 1 | 1 | 5 |
+-----------+------------+----------+
| 1 | 2 | 6 |
+-----------+------------+----------+
| 1 | 3 | 4 |
+-----------+------------+----------+
| 2 | 1 | 1 |
+-----------+------------+----------+
| 2 | 2 | 8 |
+-----------+------------+----------+
| 2 | 3 | 2 |
+-----------+------------+----------+
| 3 | 1 | 5 |
+-----------+------------+----------+
| 3 | 2 | 4 |
+-----------+------------+----------+
| 3 | 3 | 7 |
+-----------+------------+----------+
Я создал динамический Pivot данных, которые изменяют вопросы столбцов, как, например, так, чтобы врачи могли смотреть на резюме группы а пациенты.
+-----------+---+---+---+
| PatientId | 1 | 2 | 3 |
+-----------+---+---+---+
| 1 | 5 | 6 | 4 |
+-----------+---+---+---+
| 2 | 1 | 8 | 2 |
+-----------+---+---+---+
| 3 | 5 | 4 | 7 |
+-----------+---+---+---+
То, что я хотел бы сделать, это префикс номера вопрос со словом «Вопрос», так что столбцы будут выглядеть так: «Вопрос - 1», «Вопрос - 2», «Вопрос - 3». Я хотел бы добавить префикс, используя SQL-запрос, который создал динамический стержень, но поскольку Pivot является динамическим и не уверен, как его добавить.
Вот SQL, который я использовал для получения динамического Pivot.
-- Dynamic Pivot
DECLARE @PivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnNameCollection AS NVARCHAR(MAX)
-- Get column list. A DISTINCT list of questions
SELECT @ColumnNameCollection= ISNULL(@ColumnNameCollection + ',','')
+ QUOTENAME(QuestionId)
FROM (SELECT DISTINCT QuestionId FROM PatientChestPain) AS Questions
-- Build PIVOT query using the list of questions
SET @PivotQuery =
N'SELECT PatientId, ' + @ColumnNameCollection + '
FROM PatientChestPain
PIVOT(MAX(PainRank)
FOR QuestionId IN (' + @ColumnNameCollection + ')) AS PivotTableResult'
--Execute the PIVOT query
EXEC sp_executesql @PivotQuery
Я понимаю, что я мог бы просто изменить окончательный отчет и добавить «Вопрос -», однако я пытаюсь автоматически генерировать отчет, и я могу только манипулировать SQL.
ПРИМЕЧАНИЕ: Я использовал following website для генерации таблиц ascii. Очень приятный интерфейс и прост в использовании. Я попытался создать SQL Fiddle, но похоже, что он не работает с SQL Server на данный момент.
FYI. Я использую SqlFiddle для создания операторов DDL и использую rextester, com, чтобы создать скрипку. –