У меня есть таблица, которая содержит данные о пациенте. Таблица имеет Patient ID
, AdmissionDate
, между прочим. У одного и того же пациента может быть несколько AdmissionDate
. Меня интересуют только избранные пациенты, у которых дата поступления падает в выбранную дату. Например: таблица ниже
patient_id | admission_date
-----------+---------------
F001 2018-07-13
F002 2017-04-02
F003 2018-07-13
F004 2018-04-05
F005 2015-06-13
F001 2017-04-02
F002 2018-07-13
F001 2018-04-22
В приведенной выше таблице F001
имеет 3 приема: 2018-07-13, 2017-04-02, 2018-04-22
и F002
имеет 2: 2017-04-02, 2018-07-13
.
Теперь у меня есть электронная таблица идентификаторов с датами их поступления в следующем столбце. Я взял идентификаторы и даты отдельно и добавил их в следующий запрос
WITH TableA AS
(
SELECT
CONVERT(date, admission_date) as admit_date, *
FROM
AdmissionTable
WHERE
patient_id IN ('F001', 'F002', 'F003', 'F004', 'F005')
)
SELECT *
FROM TableA
WHERE admit_date IN ('2018-07-13', '2017-04-02', '2018-07-13','2018-04-05,'2015-06-13','2017-04-02','2018-07-13','2018-04-22')
Это возвращает результат, который я ищу, но и больше, чем то, что я ищу. Это дает мне даже строки пациента, чья дата поступления также находится в списке дат, который я ищу, а не те, которые перечислены в электронной таблице. По сути, запрос дает мне несколько данных для одних и тех же пациентов, а не только строку с нужной мне датой.
Как я могу это исправить? Какой лучший способ справиться с этим?
Желаемый результат должен выглядеть примерно так:
patient_id | admission_date
-----------+---------------
F001 2018-04-22
F002 2018-07-13
F003 2018-07-13
F004 2018-04-05
F005 2015-06-13