Создать сетку результатов из таблиц базы данных: SQL - PullRequest
1 голос
/ 18 июня 2020

У меня есть таблица с описанием медицинских симптомов пациентов, имеющая следующую структуру. Обратите внимание, что у пациента 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 есть столбец для головной боли, заполненный нулями. У меня есть список всех симптомов, которые я хочу включить в виде столбцов в отдельную таблицу. (назовем эту таблицу симптомом: таблица симптомов имеет только два столбца: имя симптома и идентификатор симптома)

1 Ответ

2 голосов
/ 18 июня 2020

Используйте запрос кросс-таблицу :

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

Примените этот формат к свойству Format поля SymptomStartDate :

0;;;0

Выход:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...