比较2个不同行和列之间的日期

时间:2015-02-18 16:00:10

标签: sql

我在解决这个问题时遇到了问题。这是一个示例表:

http://i.imgur.com/LLGgOMe.jpg

我需要能够找到的是任何记录,其中Discontinue_Date大于给定客户ID和Part_ID的下一行的Effective_Date。这是一个客户定价表,因此例如第53行的Discontinue_Date绝不应该大于第54130行的Effective_Date,这些是我想要查找的记录。所以我正在寻找一个SELECT查询,它会寻找任何记录,这是真的。显然,Customer_ID的最后一个Discontinue_Date行不会有下一行,所以我不想返回它。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

从屏幕截图来看,它看起来像SQL Server。所以这应该有效:

SELECT * FROM myTable
WHERE DISCONTINUE_DATE > (SELECT TOP 1 EFFECTIVE_DATE 
  FROM myTable AS sub 
  WHERE sub.CUSTOMER_ID = myTable.CUSTOMER_ID AND sub.PART_ID = myTable.PART_ID
    AND sub.EFFECTIVE_DATE > myTable.EFFECTIVE_DATE
  ORDER BY EFFECTIVE_DATE)