这是我正在使用的查询:
select
p.person_nbr,
psm.description,
m.medication_name,
StartDate,
endDate
from person p
left join patient_medication m
on p.person_id = m.person_id
left join patient_status ps
on ps.person_id = p.person_id
left join patient_status_mstr psm
on psm.patient_status_id = ps.patient_status_id
它检索此数据:
person_nbr description medication_name StartDate endDate
47 Intake Seroquel 300 mg tablet 07/13/2017 01/01/1900
47 Active Risperdal 1 mg tablet 10/21/2017 11/21/2017
47 Active sertraline 100 mg tablet 10/21/2017 11/21/2017
271 Active sertraline 100 mg tablet 11/21/2017 12/26/2017
271 Active Risperdal 1 mg tablet 11/21/2017 12/26/2017
我想将数据转换为预定义列。目标是将10个列添加到数据中。 m.medication_name字段将使用MedName1,MedName2,MedName3,MedName4,MedName5的命名约定转入总共5列。相应的日期需要进行类似的分配(MedDate1,MedDate2,MedDate3,MedDate4,MedDate5)。例如:
我需要将每个分区(由person_nbr分区)限制为5个总药物和日期对。如果超过5,我需要忽略它们。
我已经尝试过使用枢轴,但还没有接近它的工作。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
这是一个不使用PIVOT
的解决方案。这可能是一种更优雅的方法,但其可维护性对于每位患者和五种或六种药物的两个属性是易处理的。
请注意,这仅仅是一个示例,我使用[]
转义标识符时有点松散,而且最终输出与您的完全匹配(例如MedDate1
是{{ 1}}以您的2017-07-13
...格式化您认为合适的日期。
7/13/2017