我有一个简单的查询,可以拉出三个字段:ID,实验室和过程。
当ID和LAB相同时,而不是查询显示两个行,但该过程是不同的,
(EX 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
您可以使用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的罪恶,实验室与所有程序中的所有过程
在sqlserver中,您可以使用
STRING_AGG(pp.service_item_desc, ',')
您可以使用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