Хотя я знаю, что это не очень эффективно, мне нужно, чтобы это работало быстро, поэтому я стараюсь идти по самому простому пути, или, по крайней мере, я так думал.Я пытаюсь извлечь максимальные данные из сущности и принять во внимание только те строки, в которых USER не равен NULL, и в случае, если ни в одной строке для USER не задано значение NULL, тогда я буду принимать во внимание нулевые значения.
Структура сущности следующая:
- Id int,
- ParentId int,
- Guid varchar,
- EventOn DateTime,
- User int (null)
Итак, запрос следующий:
select RS.[$Id] RangeSheet,
GRST.EventOn,
RSIS.Id [Status],
RSIS.Name StatusRefex
from RangeSheet RS
left outer join (select RST.ParentId RangeSheet,
MAX(RST.EventOn) EventOn
from RangeSheetTime RST
where RST.[User] is (case RST.[User] when null then null else not null)
group by RST.ParentId) GRST on RS.[$Id]=GRST.RangeSheet
left outer join RangeSheetTime RST on GRST.EventOn=RST.EventOn
and GRST.RangeSheet=RST.ParentId
left outer join RangeSheetItemState RSIS on (case when RST.StartOrEnd = 1 then 1 when RST.StartOrEnd = 0 then 4 else null end) = RSIS.Id
where RS.[$IsDeleted]=0
Случай, с которым у меня возникли проблемы, - это случай изнутривид GRST.Что я могу сделать, чтобы выполнить мои требования?