Sql server SQL server-如何在一个视图中使用几个字段避免重复记录

Sql server SQL server-如何在一个视图中使用几个字段避免重复记录,sql-server,Sql Server,我在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 -5

我在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()

是否在两个不同的日期显示同一账户ID的行发生了变化?如果是这样的话,您是否有兴趣看到昨天或之前任何时候的变化?您是否关心它们是否已在今天插入,即没有历史记录?如果您需要视图,您还必须“创建”它!?最小值和最大值的问题是。。例如,如果1月1日、2日和3日的余额为100美元,1月4日的余额为0。。1月5日和6日也是100美元,如果我们取一个分钟(日期),我们只得到1月1日的100美元。。。但是我们还需要第五个……我想我不明白。您可以使用窗口函数,但这可能会产生重复的行。但不管怎样,你试过剧本吗?它只提供您在所需结果中描述的代码。那有什么意义呢?