根据 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;