首页 > 解决方案 > 如何比较重复 item_number 的日期结果?我正在寻找日期不早于 2016 年 9 月 30 日的结果

问题描述

我有一个包含交易历史记录的表,每次售出商品编号时都会为一列添加时间戳。它看起来像这样:

数据库快照

我需要做的是确定哪些项目自 以来没有任何交易历史。 2016-09-30

我试过这个:

SELECT * FROM IVT_ITEMTRAN WHERE TRANS_DATE < '2016-09-30 00:00:00.000'

但是我遇到的问题是我只是选择了在 2016 年 9 月 30 日之前带有时间戳的每个项目。

如何为自上面列出的日期以来没有历史记录的项目生成结果?

标签: sqlsql-server

解决方案


很确定这会做你想要的。

SELECT * 
FROM IVT_ITEMTRAN 
WHERE ITEM_NUMBER NOT IN
(
    SELECT ITEM_NUMBER
    FROM IVT_ITEMTRAN 
    WHERE TRANS_DATE < '2016-09-30 00:00:00.000'
)

或者,如果您只想要 ItemNumbers,您可以使用一些聚合。

select ITEM_NUMBER
    , EarliestDateSold = MIN(TRANS_DATE) 
from IVT_ITEMTRAN
group by ITEM_NUMBER
having MIN(TRANS_DATE) > '2016-09-30 00:00:00.000'

推荐阅读