如何仅检索每个日期的前几行

时间:2019-04-06 18:10:22

标签: sql

我正在尝试从余额表中提取每个日期的第一行。并且我正在尝试编写sql代码,但是我无法从中获得线索。

我尝试了最大,总和,分组..但没有帮助。

Date         Account    Balance
4/6/2019    A           90
4/5/2019    B           80
4/4/2019    C           70
4/3/2019    C           60
4/2/2019    D           80
4/1/2019    D           100

那么我该如何查询显示以下结果?

四月份的帐户余额

Account Balance
A           90
B           80
C           70
D           80



4 个答案:

答案 0 :(得分:1)

如果您的dbms支持,请使用分析函数first_value

 select Account,
 FIRST_VALUE(balance) OVER (partition by Account ORDER BY date desc) AS balance
 from table_name

答案 1 :(得分:0)

您可以使用sunquery作为最大日期

select account, balance 
from  (
  select  accont, balance, max(date)
  from my_table 
  group  by  accont, balance
) t  

答案 2 :(得分:0)

首先group by account获得每个date的最大值account,然后加入表格:

select t.acount, t.balance 
from tablename t inner join (
  select account, max(date) maxdate
  from tablename
  group by account
) g on g.account = t.account and g.maxdate = t.date

答案 3 :(得分:0)

典型的方法将在 document.removeEventListener("click", remDone); function remDone(){ taskTag.style.textDecoration = "none"; } 子句中进行过滤:

where

特定数据库可能有其他方法可以解决此问题。上面的代码通常具有很好的性能,特别是在select b.* from balances b where b.date = (select max(b2.date) from balances b2 where b2.account = b.account and b2.date >= '2019-04-01' and b2.date < '2019-05-01' ); 上具有索引。