我在解决这个问题时遇到了问题。这是一个示例表:
我需要能够找到的是任何记录,其中Discontinue_Date大于给定客户ID和Part_ID的下一行的Effective_Date。这是一个客户定价表,因此例如第53行的Discontinue_Date绝不应该大于第54130行的Effective_Date,这些是我想要查找的记录。所以我正在寻找一个SELECT查询,它会寻找任何记录,这是真的。显然,Customer_ID的最后一个Discontinue_Date行不会有下一行,所以我不想返回它。
我该怎么做?
答案 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)