Есть ли простая строка (или две) кода, которая будет извлекать записи до минимальной даты в другой таблице?

#sql #sql-server #claims

#sql #sql-server #утверждения

Вопрос:

Я хочу перенести посещения отделения неотложной помощи до первой даты лечения участников. У всех разные даты первой обработки, и ни одна из них не произошла до 01 января 2012 года.

Итак, если у участника дата первого обращения 24 февраля 2013 года, я хочу знать, сколько раз он посещал отделение неотложной помощи за год до этой даты.

Эти минимальные даты расположены в другой таблице, и я не могу использовать минимальную дату в моей функции DATEADD. Мысли?

Комментарии:

1. Примеры данных и желаемые результаты действительно помогли бы.

2. 7864753590 (идентификатор) 2014-07-01 (дата первого обращения) 4 (количество посещений)

Ответ №1:

Одно из возможных решений — использовать CTE для записи посещений между интересующими вас датами, а затем присоединиться к этому с помощью вашего выбора.

Вот пример:

Rextester

Комментарии:

1. Спасибо, я собираюсь попробовать!

2. Это не сработало… Я думаю, что, делая шаг назад, мне нужна помощь в выборе дат, которые произошли до минимальной даты обработки, расположенной в другой таблице. Итак, мне нужны все даты, которые произошли до этой даты, и это отличается для каждого человека.

Ответ №2:

Редактировать:

Я только что полностью обновил свой ответ. Извините за путаницу.

Итак, у вас есть как минимум две таблицы:

  • Посещения отделения неотложной помощи
  • Информация об обработке

Давайте назовем эти две таблицы [ERVisits] и [Treatments]. Я полагаю, что в обеих таблицах есть некоторое поле id для пациента / участника. Давайте назовем это [MemberID].

Как насчет этого концептуального запроса:

 WITH [FirstTreatments] AS
(
    SELECT [MemberId], MIN([TreatmentDate]) AS [FirstTreatmentDate]
    FROM [Treatments]
    GROUP BY [MemberId]
)
SELECT V.[MemberId], T.[FirstTreatmentDate], COUNT(*) AS [ERVisitCount]
FROM [ERVisits] AS V INNER JOIN [FirstTreatments] AS T ON T.[MemberId] = V.[MemberId]
WHERE DATEDIFF(DAY, V.[VisitDate], T.[FirstTreatmentDate]) BETWEEN 0 AND 365
GROUP BY V.[MemberId], T.[FirstTreatmentDate]
  

Этот запрос должен показать, сколько раз пациент / участник посещал отделение неотложной помощи за год до даты его / ее первого лечения.

Вот тестер:https://rextester.com/UXIE4263