gpt4 book ai didi

mysql - SQL - 计算多列中的出现次数

转载 作者:行者123 更新时间:2023-11-29 07:58:29 25 4
gpt4 key购买 nike

我有一个假设的数据库,其中包含患者及其合并症(或通常所说的诊断代码):

PATIENT_ID | HOSPITAL | DIAG_01 | DIAG_02 | DIAG_03 | DIAG_04 ...up to Diag_14
Patient 1 | Hosp1 | C01 | C02 | NULL | NULL
Patient 2 | Hosp1 | A01 | A02 | A03 | P37
Patient 3 | Hosp2 | A01 | D10 | X01 | NULL

患者的合并症(最多可记录 14 种)定义患者可能患有的任何疾病/疾病。特别是 C00 - C97 和 D00 - D48 与癌症 ICD-10 代码相关。

我想为每家医院制作一份摘要,统计其诊断栏中有多少患者有癌症 ICD-10 代码。

根据上面的示例,Hosp1 和 Hosp2 各有 1 名癌症患者。患者 1 的 C01 和 C02 诊断代码仅算作一名癌症患者。但如果1号患者再次入院,则将被视为另一例癌症患者。

我尝试创建一个包含所有癌症合并症的表,并对所有 14 个诊断列使用 JOIN 查询,但无法进行计数。

任何想法或帮助都将受到极大的赞赏。

最佳答案

使用全部联合

SELECT * FROM /**customize your select here could be count() etc **/
(SELECT PATIENT_ID,HOSPITAL,DIAGNOSIS
FROM (
SELECT PATIENT_ID, HOSPITAL, LEFT(DIAG_01,1) AS DIAGNOSIS FROM table_name WHERE DIAG_01 IS NOT NULL UNION ALL
SELECT PATIENT_ID, HOSPITAL, LEFT(DIAG_02,1) AS DIAGNOSIS FROM table_name WHERE DIAG_02 IS NOT NULL UNION ALL
SELECT PATIENT_ID, HOSPITAL, LEFT(DIAG_03,1) AS DIAGNOSIS FROM table_name WHERE DIAG_03 IS NOT NULL UNION ALL
SELECT PATIENT_ID, HOSPITAL, LEFT(DIAG_04,1) AS DIAGNOSIS FROM table_name WHERE DIAG_04 IS NOT NULL
) AS T1
GROUP BY PATIENT_ID,HOSPITAL,DIAGNOSIS
) AS T2
WHERE DIAGNOSIS IN ('C','D') /**where **/

关于mysql - SQL - 计算多列中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com