2013-06-05 49 views
0

好吧,我已经谷歌和谷歌搜索,仍然无法得到这个。SELECT顶部(1),聚合函数与Where子句

实际上,在一个包含几百thosand行的表中,一列有一个唯一的标识符(不是PK,也不是真正唯一的,但是嘿),另一列有数字值。

唯一标识符(UI)仅在该表内是唯一的,并且是增量式,因为最高数字表示最近的表条目。

实际上,我需要使用WHERE子句将行分解到相关行,然后获取这些行的最新UI以及这些行的值的SUM。

即,如果UI为1,3,5,7,10,并且聚合函数的对应值为100,300,500,700和1000,那么我需要作为查询结果的是UI 10,总和2600

DB是SQL2000

我该如何实现这个目标?

+1

我不明白你的问题......你能否详细说明表格的实际外观以及你想要的数据? –

+0

听起来像[最大每组](http://stackoverflow.com/search?q=greatest-n-per-group)可能会导致相关的事情.. – user2246674

+0

@约翰,好吧,我会尝试。表中的一列记录与金融交易相关的货币金额。另一列记录财务价值。所有交易都记录在同一张表中,每笔交易都有一个参考编号,对于记录的每笔金融交易都会增加。因此,您可能有参考1,值1000,说明当前帐户,并且以下行可能是参考1,值-1000,说明储蓄帐户。其中几个之后,需要一份报告。我们的想法是根据标准对数值求和并得到最后一个参考号以确定截断点 – user155369

回答

0

听起来好像表格中的所有项目都需要汇总并返回最大标识符。这对你有用吗?

Select Max(ID), Sum(Number) from TableName 

ID将是您的唯一标识符列名称。 数字将成为保存数字的列名称。 TableName是您的表的名称。

+0

它不是表中的所有项目,但对表中的某些项目受where子句限制(这可能是相当长的一个)该方案实际上涉及到一个相当大的帐户包,所以我需要获得总计,而且要获得相关的“唯一参考号码”作为切入点。这意味着,如果报告将来重新运行,只需添加WHERE URN <=记录的URN,将重新创建相同的报告,排除任何记录符合相同标准的进一步交易。 – user155369

+0

不知道如果使用MAX可能会工作,虽然我没有这样做,但我会想象不会因为我期望得到多行回来,而不仅仅是满足相关标准和最后记录的参考编号的值的总和。 – user155369

+0

我收回。 MAX()工作正常。谢谢 – user155369