我有一个包含以下列的表
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
如何使用上述日期格式获取“最近的余额”?
答案 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的列,以便我知道哪个是相似日期中的最新日期