从相似日期中获取最大值(日期)

时间:2010-12-22 04:57:47

标签: sql vb.net

我有一个包含以下列的表

TransDate(varchar20),名称(varchar20),地址(varchar20),金额(int),余额(int)

现在我需要使用以下查询获取“近期余额”

Select Balance from myTable where TransDate = (Select Max(TransDate) from myTable)

如果每天只有一个条目,如下面的

,此查询会给我正确的结果
10/12/2010   SomeName   SomeAddress   1000   1000
10/13/2010   SomeName   SomeAddress   1000   2000
10/14/2010   SomeName   SomeAddress   1000   3000

但如果我每天有超过1个参赛作品怎么办?

10/12/2010   SomeName   SomeAddress   1000   1000
10/12/2010   SomeName   SomeAddress   1000   2000
10/12/2010   SomeName   SomeAddress   1000   3000

如何使用上述日期格式获取“最近的余额”?

4 个答案:

答案 0 :(得分:1)

Select 
  Sum(Balance)
from myTable 
where TransDate = (Select Max(TransDate) from myTable)

如果您想要每天的余额

Select 
  TransDate,
  Sum(Balance)
from myTable 
Group By TransDate

答案 1 :(得分:1)

由于日期格式没有给出最后一个时间戳,因此您不能依赖它来进行最后一次余额。相反,请使用金额字段的总和:

Select 
  Sum(Amount)
from myTable

答案 2 :(得分:1)

如果在数据库中你没有关于三个记录中最新记录的真实指示,那么就不可能说出哪个是最新记录 - 你需要改变一些东西以便时间也被存储,而不仅仅是日期。

如果您只需要最后一天的任何记录,可以SELECT TOP 1,如果您需要总和 - 请参阅Sajib Mahmud或John Hartsock的答案

<强>更新

如果Balance实际上是Amounts的总和,则只需选择Amounts的总和,无论Balance值是多少。

答案 3 :(得分:0)

感谢所有回复。我搞定了

以下是适合我的查询

Select Balance from myTable where TimeStamp = (select MAX(TimeStamp) as RecentTime from myTable where RecordDate = (Select MAX(RecordDate) from myTable)   Group By RecordDate

BTW我在myTable中添加了另一个名为TimeStamp的列,以便我知道哪个是相似日期中的最新日期