#sql #select
Вопрос:
У меня есть такой запрос
select * from dbo.EventLogs where EntityID = 60181615 and EventTypeID in (1, 2, 3, 4, 5) and NewValue = 'Received'
Если 2 и 4 не существуют с новым значением «Получено», это показывает следующее
Ответ №1:
В идеале вы должны где-то хранить таблицу, содержащую все возможные EventTypeID
значения. Без этого мы можем использовать CTE на месте вместе с левым соединением:
WITH EventTypes AS ( SELECT 1 AS ID UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) SELECT et.ID AS EventTypeId, el.* FROM EventTypes et LEFT JOIN dbo.EventLogs el ON el.EntityID = 60181615 AND el.NewValue = 'Received' WHERE et.ID IN (1,2,3,4,5);
Комментарии:
1. Я создал таблицу со всеми возможными типами событий
2. Затем замените
EventTypes
в моем ответе эту таблицу.