[英]SQL Query, for each row in table A should fetch multiple row values (one column) as comma separated in result
下面,我描述這些表並解釋我要編寫的查詢,
訪問表
+--------------+------------------+--------+-------+-----------+
| FIELD | TYPE | NULL | KEY | DEFAULT |
+--------------+------------------+--------+-------+-----------+
| VISIT_ID | VARCHAR(200) | NO | UNI | NULL |
| PATIENT | VARCHAR(45) | NO | PRI | NULL |
| DOCTOR | VARCHAR(45) | NO | PRI | NULL |
| COMPLAINTS | CLOB(2147483647) | YES | | NULL |
| OBSERVATIONS | CLOB(2147483647) | YES | | NULL |
| REPORTS | VARCHAR(500) | YES | | NULL |
| START | TIMESTAMP(23) | NO | PRI | NULL |
| END | TIMESTAMP(23) | NO | PRI | NULL |
| CREATED_ON | DATE(8) | NO | PRI | NULL |
| UPDATED_ON | DATE(8) | YES | | NULL |
| STATUS | VARCHAR(200) | NO | PRI | NULL |
| TYPE | VARCHAR(200) | YES | | NULL |
| DESCRIPTION | VARCHAR(200) | NO | | NULL |
+--------------+------------------+--------+-------+-----------+
和高亮表
+----------+------------------+--------+-------+-----------+
| FIELD | TYPE | NULL | KEY | DEFAULT |
+----------+------------------+--------+-------+-----------+
| VISIT_ID | VARCHAR(200) | NO | | NULL |
| MATTER | CLOB(2147483647) | NO | | NULL |
+----------+------------------+--------+-------+-----------+
現在我要查詢的是,對於訪問表中的每個VISIT,我想在Highlight表中獲取多個記錄。 我可以使用內部聯接,但是它給我重復的訪問記錄(請參見下面的SQL)
select "PUBLIC"."VISIT"."VISIT_ID", "PUBLIC"."VISIT"."DESCRIPTION", "PUBLIC"."VISIT"."START", "PUBLIC"."HIGHLIGHTS"."MATTER" from "PUBLIC"."VISIT", "PUBLIC"."HIGHLIGHTS" where "PUBLIC"."VISIT"."VISIT_ID" = "PUBLIC"."HIGHLIGHTS"."VISIT_ID" order by "PUBLIC"."VISIT"."START" asc
這將返回以下結果:
+------------------+-------------+-------------------------+-------------+
| VISIT_ID | DESCRIPTION | START | MATTER |
+------------------+-------------+-------------------------+-------------+
| 5178231763512765 | Head Ache | 2014-05-07 23:08:10.383 | HIGH BP |
| 5178231763512765 | Head Ache | 2014-05-07 23:08:10.383 | SUGAR |
| 5178231763512765 | Head Ache | 2014-05-07 23:08:10.383 | BROKEN BONE |
+------------------+-------------+-------------------------+-------------+
但是我想要的是以下內容:
+------------------+-------------+-------------------------+---------------------------+
| VISIT_ID | DESCRIPTION | START | MATTER |
+------------------+-------------+-------------------------+---------------------------+
| 5178231763512765 | Head Ache | 2014-05-07 23:08:10.383 | HIGH BP~SUGAR~BROKEN BONE |
+------------------+-------------+-------------------------+---------------------------+
一些可以幫助如何編寫查詢以獲取類似上面的數據? 如果需要,“事項”可以是任何變量。
您可以使用group_concat聚合函數(在mysql和H2中提供)來完成此操作。 所以試試這個:
select "PUBLIC"."VISIT"."VISIT_ID"
, "PUBLIC"."VISIT"."DESCRIPTION"
, "PUBLIC"."VISIT"."START"
,group_concat( "PUBLIC"."HIGHLIGHTS"."MATTER" SEPERATROR ',') as MatterAggre
from "PUBLIC"."VISIT", "PUBLIC"."HIGHLIGHTS"
where "PUBLIC"."VISIT"."VISIT_ID" = "PUBLIC"."HIGHLIGHTS"."VISIT_ID"
group by "PUBLIC"."VISIT"."VISIT_ID", "PUBLIC"."VISIT"."DESCRIPTION", "PUBLIC"."VISIT"."START"
order by "PUBLIC"."VISIT"."START" asc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.