【发布时间】:2014-10-22 19:35:00
【问题描述】:
SQL Server 2008 R2。
我需要根据一个共同的、唯一的 ID 找出连续行之间的差异。
Data:
AccountNumber ValueDate CustomerName Amount Difference
1 06/01/2014 Customer Name 1 -3436.184178
2 06/03/2014 Customer Name 2 -154.5 -51.5
2 06/15/2014 Customer Name 2 -103
3 06/02/2014 Customer Name 3 -45289.44
4 06/20/2014 Customer Name 4 -4907.52 -1116.43
4 06/25/2014 Customer Name 4 -3791.09 -3791.09
4 06/30/2014 Customer Name 4 -3302.19
差异列是我想要生成的。 只有在以下情况下,我才需要找到连续行之间的差异:
一个特定的 AccountNumber 有超过 1 行。
我设法删除了具有 1 个值/AccountNumber 的行 [在这种情况下为第 1 行和第 4 行]
我仍然需要找到与 [row - row + 1] 的区别 我在 Stack Overflow 上看到了几个答案,但它们似乎不适用于这种情况。
【问题讨论】:
-
您需要指定“连续行”的含义。 SQL Server 是如何知道 -154.5 在 -103 之前出现的? (此外,如果 AccountNumber 可以在两行中具有相同的值,则它不是唯一的。)
-
表代表无序集。因此,没有“连续行”之类的东西,除非您明确有一个带有排序的列——通常是一个 id 或创建日期。您的数据没有这样的列,因此它没有“连续行”。
-
已编辑以包含 ValueDate 作为连续性的参考点[不确定这是否是一个词]
标签: sql sql-server data-manipulation