SQL Запрос на поиск даты до даты - PullRequest
0 голосов
/ 09 января 2020

У меня есть этот набор данных:

enter image description here

, и я хотел бы получить этот результат: enter image description here

select c.DHUnitID as ID, UNIT_STAT_CD, DHUnitStatusTypeID, CONVERT(varchar(10), CAST(UNIT_STAT_DT as date), 101) as EffectiveFrom,
CONVERT(varchar(10), CAST(UNIT_STAT_DT as date), 101) as EffectiveTo
from [Q00HMS_DB001].[PMFUNITS].[PMFUNITS_STATUS_MV] a inner join Q00EDH_DB001.EDH.UnitStatusType b
on a.unit_stat_cd=b.UnitStatusTypeCode inner join Q00EDH_DB001.EDH.Unit c
on a.ID=c.UnitID
where c.DHUnitID='1223'
order by uniT_stat_dt desc

Я пытался несколькими способами, но столбец EffectiveTo не дает желаемых результатов. Любой совет в изменении запроса для получения необходимого набора результатов приветствуется.

Спасибо

1 Ответ

3 голосов
/ 09 января 2020

Вы захотите использовать функцию LAG . Это позволяет вам извлечь значение предыдущей строки в упорядоченном разделе (ключевое слово OVER ).

Я воссоздал ваш набор данных с простой таблицей, содержащей только указанные вами значения, и использовал следующий запрос:

select *,
  LAG(EffectiveFrom) over
    (partition by ID order by EFfectiveFrom desc)
  as EffectiveTo
from dbo.PartitionOverDates
order by EffectiveFrom desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...