sql提取mimic3数据怎么将诊断和化验等分行,即将长数据转换为宽数据
时间: 2023-11-28 22:47:42 浏览: 93
在MIMIC-III中,诊断和化验等数据都存储在不同的表中,因此需要使用SQL连接不同的表来提取这些数据。在将长数据转换为宽数据时,可以使用SQL的PIVOT函数来实现。
以下是一个示例查询,将MIMIC-III中的诊断和化验数据转换为宽数据:
```
SELECT p.subject_id, p.hadm_id,
MAX(CASE WHEN d.icd9_code LIKE '401%' THEN d.icd9_code ELSE NULL END) AS diag_hypertension,
MAX(CASE WHEN d.icd9_code LIKE '250%' THEN d.icd9_code ELSE NULL END) AS diag_diabetes,
MAX(CASE WHEN l.itemid = 50868 THEN l.value ELSE NULL END) AS lab_albumin,
MAX(CASE WHEN l.itemid = 51006 THEN l.value ELSE NULL END) AS lab_glucose,
MAX(CASE WHEN l.itemid = 51222 THEN l.value ELSE NULL END) AS lab_sodium
FROM admissions a
INNER JOIN patients p ON a.subject_id = p.subject_id
LEFT JOIN diagnoses_icd d ON a.hadm_id = d.hadm_id
LEFT JOIN labevents l ON a.hadm_id = l.hadm_id
GROUP BY p.subject_id, p.hadm_id;
```
在这个例子中,我们连接了三个表:`admissions`、`patients`和`diagnoses_icd`、`labevents`,将这些表中的数据整合到一个查询结果中。在查询结果中,我们使用了PIVOT函数将每个诊断和化验结果转换为一个列,并将其按照`subject_id`和`hadm_id`进行了分组。这样,我们就得到了一个宽数据格式的结果集,每个病人的诊断和化验结果都排列在同一行中。
阅读全文