根据 SQL 中的条件创建另一列
Create another column based on the conditions in SQL
我需要帮助来为下面的输出创建查询。正如您在下面的数据集中看到的那样,我希望将患者记录包含在一行中,其中包含所有详细信息
例如,Shahin Adam 只需要 1 条记录将剂量编号 1 和剂量编号 2 的详细信息与每次剂量的日期相结合
期望输出
感谢您的帮助
我想你只是想要条件聚合:
select lastname, firstname,
max(case when dosenumber = 1 then dosenumber end) as dosenumber_1,
max(case when dosenumber = 1 then timeofevent end) as timeofevent_1,
max(case when dosenumber = 2 then dosenumber end) as dosenumber_2,
max(case when dosenumber = 2 then timeofevent end) as timeofevent_2
from t
group by lastname, firstname;
根据所需的输出结果部分,仅显示 2 条名字以 A 开头的记录。这就是此处启用 where 子句的原因。如果需要所有患者信息,则禁用 where 子句。
SELECT PatientLastName, PatientFirstName
, MAX(CASE WHEN DoseNumber = 1 THEN DoseNumber ELSE NULL END) DoseNumber1
, MAX(CASE WHEN DoseNumber = 1 THEN TimeOfEvent ELSE NULL END) TimeOfEvent1
, MAX(CASE WHEN DoseNumber = 2 THEN DoseNumber ELSE NULL END) DoseNumber2
, MAX(CASE WHEN DoseNumber = 2 THEN TimeOfEvent ELSE NULL END) TimeOfEvent2
FROM table_name
WHERE PatientFirstName like 'A%'
GROUP BY PatientLastName, PatientFirstName
ORDER BY PatientFirstName;
我需要帮助来为下面的输出创建查询。正如您在下面的数据集中看到的那样,我希望将患者记录包含在一行中,其中包含所有详细信息
例如,Shahin Adam 只需要 1 条记录将剂量编号 1 和剂量编号 2 的详细信息与每次剂量的日期相结合
期望输出
感谢您的帮助
我想你只是想要条件聚合:
select lastname, firstname,
max(case when dosenumber = 1 then dosenumber end) as dosenumber_1,
max(case when dosenumber = 1 then timeofevent end) as timeofevent_1,
max(case when dosenumber = 2 then dosenumber end) as dosenumber_2,
max(case when dosenumber = 2 then timeofevent end) as timeofevent_2
from t
group by lastname, firstname;
根据所需的输出结果部分,仅显示 2 条名字以 A 开头的记录。这就是此处启用 where 子句的原因。如果需要所有患者信息,则禁用 where 子句。
SELECT PatientLastName, PatientFirstName
, MAX(CASE WHEN DoseNumber = 1 THEN DoseNumber ELSE NULL END) DoseNumber1
, MAX(CASE WHEN DoseNumber = 1 THEN TimeOfEvent ELSE NULL END) TimeOfEvent1
, MAX(CASE WHEN DoseNumber = 2 THEN DoseNumber ELSE NULL END) DoseNumber2
, MAX(CASE WHEN DoseNumber = 2 THEN TimeOfEvent ELSE NULL END) TimeOfEvent2
FROM table_name
WHERE PatientFirstName like 'A%'
GROUP BY PatientLastName, PatientFirstName
ORDER BY PatientFirstName;