获得最低值和发生的日期

  • 本文关键字:日期 最低值 sql ms-access
  • 更新时间 :
  • 英文 :


我有3列

DATE|END OF DAY BALANCE|ACCOUNT

我想获得最低余额,而最低余额小于零以及发生这种情况的日期或日期。

以下查询会带回所有日期:

SELECT DISTINCT
       END_OF_DAY_BALANCE.Date,
       MIN(END_OF_DAY_BALANCE.[END OF DAY BALANCE]) AS [MinOfEND OF DAY BALANCE],
       END_OF_DAY_BALANCE.[ACCOUNT]
FROM END_OF_DAY_BALANCE
GROUP BY END_OF_DAY_BALANCE.Date,
         END_OF_DAY_BALANCE.[ACCOUNT]
HAVING(((MIN(END_OF_DAY_BALANCE.[END OF DAY BALANCE])) < 0));

有很多方法可以实现这一目标 -

以下是一种可能的方法,在一个子查询上使用inner join检索每个帐户的最低余额值,以便加入可以从其帐户&amp;的主表中产生相应的记录;余额字段匹配由子查询计算的。

select t.*
from
    end_of_day_balance t inner join
    (
        select u.account, min(u.[end of day balance]) as mb
        from end_of_day_balance u
        where u.[end of day balance] < 0
        group by u.account
    ) v on
    t.account = v.account and t.[end of day balance] = v.mb

另外,您可以使用以下方式使用相关的子查询:

select t.*
from end_of_day_balance t
where 
    t.[end of day balance] = 
    (
        select min(u.[end of day balance]) 
        from end_of_day_balance u 
        where u.account = t.account and u.[end of day balance] < 0
    )

在这里,对每个记录进行了子查询,只有那些保留验证where子句的记录,因此为每个帐户返回。

最新更新