从数据库表创建结果网格:sql

uklbhaso  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(359)

我有一个描述病人的医疗症状的表格,其结构如下。请注意,患者1和患者2有两种症状。

| patientID | symptomName    | SymptomStartDate | SymptomDuration |
|-----------|----------------|------------------|-----------------|
| 1         | Fever          | 01/01/2020       | 10              |
| 1         | Cough          | 02/01/2020       | 5               |
| 2         | ChestPain      | 03/01/2020       | 6               |
| 2         | DryEyes        | 04/01/2020       | 8               |
| 3         | SoreThroat     | 05/01/2020       | 2               |
| 4         | AnotherSymptom | 06/01/2020       | 1               |

使用这些数据,我想创建一个网格,显示每个患者有哪些症状,格式如下(1表示患者有该症状,0表示患者没有该症状)

| patientID | Fever | Cough | ChestPain | DryEyes | SoreThroat | AnotherSymptom |Headache|
|-----------|-------|-------|-----------|---------|------------|----------------|--------|
| 1         | 1     | 1     | 0         | 0       | 0          | 0              |0       |
| 2         | 0     | 0     | 1         | 1       | 0          | 0              |0       |
| 3         | 0     | 0     | 0         | 0       | 1          | 0              |0       |
| 4         | 0     | 0     | 0         | 0       | 0          | 1              |0       |

请注意,第一个表中的患者都没有头痛,但表2中的头痛列中有0。我有一个所有症状的列表,我想作为列包含在一个单独的表中(我们称之为symptom表:symptom表只有两列:symptomname和symptomid)

z9smfwbn

z9smfwbn1#

使用交叉表查询:

TRANSFORM 
    Count(Symptoms.SymptomStartDate)
SELECT 
    Symptoms.PatientID
FROM 
    Symptoms
GROUP BY 
    Symptoms.PatientID
PIVOT 
    Symptoms.SymptomName 
    IN ('Fever','Cough','ChestPain','DryEyes','SoreThroat','AnotherSymptom','Headache');

将此格式应用于字段symptomstartdate的format属性:

0;;;0

输出:

相关问题