【发布时间】:2020-02-10 14:00:44
【问题描述】:
我有一个看起来有点像这样的数据库:
表 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 检查,它不应该也出现吗?
【问题讨论】:
标签: sql-server database tsql