我有一个简单的查询,该查询提取三个字段:ID,实验室和过程。
当ID和实验室相同但过程不同时,查询将显示两行,而不是显示
(例如ID:1,实验室:血液,程序:身体; ID:1,实验室:血液,程序:眼睛检查)
如何将其分组,以便在具有相似的ID和实验室时,结果仅是具有多个过程列的一条记录?
(ex ID:1,实验室:血液,步骤1:身体检查,步骤2:眼睛检查)
这是我的查询
SELECT
pe.ID
,l.acttextdisplay as Lab
,pp.service_item_desc as Procedure
FROM lab l
JOIN patient_encounter pe ON l.ID = pe.ID
JOIN patient_procedure pp ON pp.ID = pe.ID
答案 0 :(得分:0)
您可以使用group_concat
SELECT
pe.ID
,l.acttextdisplay as Lab
, group_concat(pp.service_item_desc) as Procedure
FROM lab l
JOIN patient_encounter pe ON l.ID = pe.ID
JOIN patient_procedure pp ON pp.ID = pe.ID
group by pe.ID ,l.acttextdisplay
通过这种方式,您将获得id为id的sinle,所有步骤均在同一实验室
在sqlserver中,您可以使用
STRING_AGG(pp.service_item_desc, ',')
答案 1 :(得分:-1)
您可以使用group by
和条件聚合:
SELECT pe.ID
MAX(CASE WHEN pp.service_item_desc THEN 'blood' THEN l.acttextdisplay END) as blood,
MAX(CASE WHEN pp.service_item_desc THEN 'eye' THEN l.acttextdisplay END) as eye,
. . .
FROM lab l JOIN
patient_encounter pe
ON l.ID = pe.ID JOIN
patient_procedure pp
ON pp.ID = pe.ID
GROUP BY pe.ID