У меня вопрос:
SELECT
PatientId, Parameter, AVG(CONVERT(INT, CONVERT(NVARCHAR(100), [Value]))) as [Value]
FROM
ExaminationDetails
JOIN
Examinations
ON
Examinations.Id = ExaminationDetails.ExaminationId
WHERE
Parameter IN ('BLD_SYS', 'BLD_DIA')
GROUP BY
PatientId, Parameter
Которые возвращают результат:
PatientId | Parametr | Value
----------+----------+-------
3 | BLD_DIA | 96
----------+----------+-------
98 | BLD_DIA | 89
----------+----------+-------
3 | BLD_SYS | 137
----------+----------+-------
98 | BLD_SYS | 133
----------+----------+------
Есть ли способ изменить возвращаемое значение таблицы, когда BLD_DIA
и BLD_SYS
возвращаются как столбцы:
PatientId | BLD_DIA | BLD_SYS
----------+---------+--------
3 | 96 | 137
----------+---------+--------
98 | 89 | 133
----------+---------+--------
0
Michael Kostiuchenko
11 Фев 2021 в 10:30
1 ответ
Я улучшаю ваш запрос с помощью CTE и условного агрегирования
with cte as (
SELECT
PatientId, Parameter
, AVG(CONVERT(INT, CONVERT(NVARCHAR(100), [Value]))) as [Value]
FROM
ExaminationDetails
JOIN
Examinations
ON
Examinations.Id = ExaminationDetails.ExaminationId
WHERE
Parameter IN ('BLD_SYS', 'BLD_DIA')
GROUP BY
PatientId, Parameter
)
select PatientId
, max(case when Parameter='BLD_DIA' then [Value] end) BLD_DIA
, max(case when Parameter='BLD_SYS' then [Value] end) BLD_DIA
from cte
group by PatientId
1
Michael Kostiuchenko
11 Фев 2021 в 08:02
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.