У меня есть база данных, которая выглядит примерно так:
Таблица 1: ------------------- Таблица 2:
ID1|Item Name ID2|Date
---|---------- ---|---------
1 |A 1 |01/01/2020
2 |B 1 |11/01/2020
3 |C 1 |21/01/2020
2 |01/01/2020
Я хочу получить самую последнюю дату каждого элемента, даже если у него его нет:
Item Name|Latest Date
---------|-----------
A |21/01/2020
B |01/01/2020
C |NULL
Итак, я сделал это:
SELECT [Item Name], [Date] AS [Latest Date]
FROM [Table 1]
LEFT JOIN [Table 2] AS A
ON [ID1] = [ID2]
WHERE [Date] IN
(
SELECT MAX([Date]) FROM [Table 2] AS B
WHERE A.[ID2] = B.[ID2]
)
OR [Date] IS NULL
Но что я получу? вместо этого это:
Item Name|Latest Date
---------|-----------
A |21/01/2020
B |01/01/2020
Что я делаю не так? Как я могу заставить C появиться?
Я знаю, что предложение WHERE избавляется от него, но, поскольку я добавил проверку IS NULL, не должно ли она появиться тоже?