У меня есть запрос, который соединяется с несколькими таблицами. Основываясь на значении столбца одной таблицы, я хотел бы получить значение ключа другой таблицы. Но когда это ключевое значение присоединяется к другой таблице (с целью идентификации разных значений даты для этого ключа), появляется несколько дат. Я хотел бы вернуть значение ключа, дата которого является последней, когда она присоединена к другой таблице. У меня есть запрос, который работает, но он очень избыточный, так как подзапрос почти идентичен основному запросу. Я не знал, есть ли способ или лучший способ добиться этого.SQL - более чистый способ выбора результата на основе максимальной даты?
Пример запроса:
SELECT distinct TableA.key
FROM TableA a INNER JOIN TableB b
ON a.key = b.Key
INNER JOIN TableC c ON b.Key2 = c.Key2
INNER JOIN TableD d ON b.Key = d.Key
WHERE b.column1 = XYZ
AND c.column1 = 123
and d.date =
(SELECT max(d.date)
FROM TableA a INNER JOIN TableB b
ON a.Key = b.Key
INNER JOIN TableC c ON b.Key2 = c.Key2
INNER JOIN TableD d ON b.Key = d.Key
WHERE b.column1 = XYZ
AND c.column1 = 123
)
Я никогда раньше не видел опцию «top x with ties». Спасибо за информацию! – BateTech
В этом ответе есть одна опечатка ... 'DISTINCT' должен появиться до' TOP 1 WITH TIES', а не после. – BateTech
@BateTech - Спасибо за то, что указали это –