Я пытаюсь получить запрос для сравнения двух таблиц, ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ и нахождение любых результатов, которые не имеют совпадений в правой таблице.Проблема в том, что у меня есть составной ключ TicketNo, ItemNo и UniqueID, и мне нужно сравнивать только строки, которые имеют самый высокий UniqueID для любого заданного TicketNo.
Мне нужны данные, чтобы моя программа знала, нужно ли ее обновлятьТаблица рабочей копии и какие строки нужно обновить, если это так.
В основном я хочу вот что:
SELECT TicketNo
FROM History t1
LEFT OUTER JOIN Working t2 on
max(t1.[UniqueID])=t2.[UniqueID]
AND t1.[TicketNo]=t2.[TicketNo]
AND t1.[ItemNo]=t2.[ItemNo]
WHERE t2.[TicketNo] IS NULL
Но я не могу использовать агрегирующую функцию max здесь.Я не знаю, как я могу использовать подзапрос (или потерпеть неудачу в этом CTE, но я бы предпочел подзапрос), чтобы получить только максимальный уникальный идентификатор для данного TicketNo .Я не могу присоединиться только к самому высокому уникальному идентификатору в таблице.
Мои данные выглядят так, при условии двух дубликатов:
TicketNo UniqueID ItemNo
15 1270662207 1
15 1184857061 1
В этом случае я хочу сначала только строка для возврата.Мне все равно, есть ли в моей рабочей таблице старые строки с TicketNo 15
или нет.