首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对相似记录上的不同列进行分组

对相似记录上的不同列进行分组
EN

Stack Overflow用户
提问于 2019-02-22 01:27:58
回答 2查看 28关注 0票数 0

我有一个简单的查询,它提取三个字段: ID、lab和procedure。

代替当ID和lab相同但过程不同时显示两行的查询,

(ex ID: 1,实验室:血液,程序:物理;ID: 1,实验室:血液,程序:眼科检查)

如何将其分组,以便当存在相似的ID和lab时,结果只有一条记录,其中有多个过程列?

(ex ID: 1,实验室:血液,程序1:体检,程序2:眼科检查)

下面是我的问题

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2019-02-22 01:37:27

您可以使用group_concat

代码语言:javascript
复制
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中,您可以使用

代码语言:javascript
复制
 STRING_AGG(pp.service_item_desc, ',') 
票数 0
EN

Stack Overflow用户

发布于 2019-02-22 01:30:31

您可以使用group by和条件聚合:

代码语言:javascript
复制
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
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54812947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档