【发布时间】:2021-04-23 23:51:57
【问题描述】:
我正在使用 SQL Server 2008 R2,我正在努力编写一个查询来返回列更改的所有行。
在下表中,我想按日期顺序浏览所有记录,并仅选择金额与该客户之前的金额不同的行。
| CustomerId | InvoiceId | DateInvoice | Amount |
|---|---|---|---|
| 209 | 9725772 | 2020-12-10 | 9.50 |
| 209 | 9725773 | 2021-01-15 | 1.50 |
| 209 | 9725774 | 2021-01-17 | 2.50 |
| 209 | 9725775 | 2021-01-19 | 3.50 |
| 209 | 9725776 | 2021-01-21 | 3.50 * |
| 209 | 9725777 | 2021-01-23 | 9.50 |
| 209 | 9725778 | 2021-01-25 | 9.50 * |
| 209 | 9725779 | 2021-01-25 | 3.50 |
| 210 | 9726132 | 2021-02-02 | 3.50 |
| 210 | 9726133 | 2021-03-02 | 9.50 |
| 210 | 9726134 | 2021-04-02 | 9.50 * |
我已在金额列中为我不想返回的行添加了一个星号。
如有任何建议,我们将不胜感激。
【问题讨论】:
-
如果您使用的是受支持的 SQL Server 版本(甚至是扩展支持的版本),这将是微不足道的...LAG (Transact-SQL)/LEAD (Transact-SQL)。相反,您需要使用自联接到前一行。
标签: sql sql-server tsql sql-server-2008-r2