我有一个简单的查询,它提取三个字段: ID、lab和procedure。
代替当ID和lab相同但过程不同时显示两行的查询,
(ex ID: 1,实验室:血液,程序:物理;ID: 1,实验室:血液,程序:眼科检查)
如何将其分组,以便当存在相似的ID和lab时,结果只有一条记录,其中有多个过程列?
(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发布于 2019-02-22 01:37:27
您可以使用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 通过这种方式,您可以获得一个sinle for for id,lab,其中的所有过程都在相同的
在sqlserver中,您可以使用
STRING_AGG(pp.service_item_desc, ',') 发布于 2019-02-22 01:30:31
您可以使用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.IDhttps://stackoverflow.com/questions/54812947
复制相似问题