如何查看列中的值是否在多个日期发生变化

How to see if values in a column changed across multiple dates

下面有一个 table,我需要查看给定期间内任何贷款编号的利率是否发生变化。下面只是示例数据,我需要在 200 万行中找到此信息。如何才能做到这一点?

示例数据

+------------+-------------+---------------+
|    DATE    | LOAN_NUMBER | INTEREST_RATE |
+------------+-------------+---------------+
| 04/01/2010 |     1111122 | 0.375         |
| 05/15/2011 |     1111122 | 0.375         |
| 06/01/2012 |     1111122 | 0.300         |
| 07/08/2010 |     1111133 | 0.400         |
| 07/01/2011 |     1111133 | 0.450         |
+------------+-------------+---------------+

我尝试了以下操作:

Select A.Date, A.Loan_Number, A.Interest_Rate
FROM TABLEX A
INNER JOIN TABLEX B ON A.Loan_Number = B.Loan_Number
AND A.Date < B.Date

但这并没有得到我需要的结果。

感谢任何帮助!

Select A.Date, A.Loan_Number, A.Interest_Rate 
     , B.Date, B.Interest_Rate 
FROM TABLEX A
INNER JOIN TABLEX B 
 ON A.Loan_Number = B.Loan_Number
AND DateDiff(dd, A.Date, B.Date) =< 10 
AND DateDiff(dd, A.Date, B.Date)  > 0
AND A.INTEREST_RATE <> B.INTEREST_RATE

你可以使用 row_number 来模仿下一个函数,比如

   select b.* 
    from (
    Select [Date], Loan_Number, Interest_Rate,row_number() over(partition by Loan_Number order by  [Date] desc, Interest_Rate desc) rowid
    FROM TABLEX)  A
    join (
    Select [Date], Loan_Number, Interest_Rate,row_number() over( partition by Loan_Number order by  [Date] desc, Interest_Rate desc) rowid
    FROM TABLEX)  B
    on a.rowid = b.rowid -1 
    and a.Loan_Number = b.Loan_Number
    where a.Interest_Rate <> b.Interest_Rate

Interest_Rate 已更改意味着 MIN 值与 MAX 值不同。

查询将 return 列出 Interest_Rate 在给定时间段内(从 @StartDate@EndDate 发生变化的所有 Loan_Numbers独家)。

SELECT A.Loan_Number
FROM TABLEX A
WHERE
    A.Date >= @StartDate
    AND A.Date < @EndDate
GROUP BY A.Loan_Number
HAVING MIN(A.Interest_Rate) <> MAX(A.Interest_Rate)
;