我在SQL Server上有一个源表,它每天都存储数据,而不考虑属性的任何更改。例如
ACCT_ID DATE CNCY_C BALN_A
200013818991 10/04/2014 AUD -500,000.00
200013818991 11/04/2014 AUD -500,000.00
200013818991 14/04/2014 AUD -500,000.00
200013818991 15/04/2014 AUD -500,000.00
200013818991 16/04/2014 AUD -500,000.00
200013818991 17/04/2014 AUD -500,000.00
200013818991 22/04/2014 AUD 0
200013818991 23/04/2014 AUD 0
200013818991 24/04/2014 AUD 0
200013818991 28/04/2014 AUD -500,000.00
200013818991 29/04/2014 AUD -500,000.00
200013818991 30/04/2014 AUD -500,000.00
200013818991 1/05/2014 AUD -500,000.00
由于数据太大,我们只想把有变化的记录带到以下
ACCT_ID DATE CNCY_C BALN_A
200013818991 10/04/2014 AUD -500,000.00
200013818991 22/04/2014 AUD 0
200013818991 28/04/2014 AUD -500,000.00
我没有对数据库进行"创建"访问,无法将数据复制到另一个表中并使用秩等进行检查。有没有其他方法可以使用视图实现这一点。。感激你的想法。
请参阅图片以更好地理解数据
您需要一个聚合及其背后的逻辑。
这应该会帮助你
SELECT ACCT_ID,MIN(DATE),CNCY_C,BALN_A
FROM yourTable
GROUP BY ACCT_ID,CNCY_C,BALN_A
您可能需要决定重复的日子会发生什么。如果你想要一个值的第一次出现,那么就让MIN()
保持原样。如果你想要最后一次出现,你需要把它改为MAX()
。