所以我需要选择每个财政年度的记录,但前提是第一个记录是在同一个财政年度。例如:
Acc_ref Fin_year Amount Balance Date
123 2014 -10 80 01.06.2014
123 2014 -10 90 01.05.2014
123 2014 100 100 01.04.2014
321 2014 -10 80 01.04.2014
321 2013 -10 90 01.03.2014
321 2013 100 100 01.02.2014
在这个例子中,我想从fin_year与第一行匹配的最后一行中选择acc_ref和balance。因此我只期望看到123(acc_ref)和80(余额)。
选择acc_ref,日期,余额 来自tablename其中(acc_ref,date)in( 选择acc_ref,max(日期)作为日期 来自tablename 按acc_ref分组
但也想说明fin_year匹配最小日期fin_year
可以这样做吗?
答案 0 :(得分:0)
我不认为这是一个好问题,但如果你有ID AUTO_INCREMENT
这样的东西,那么你可以将它作为第一个也是最后一个使用,你可以编写一个检查min(ID)
的SQL查询并显示max(ID)
答案 1 :(得分:0)
如果我理解这个问题,这是一个可能的解决方案。
我按Acc_ref
分区并按Acc_ref, date
排序的行编号,然后在YEAR(Date)
匹配Fin_year
时选择第一行
with cteB (Acc_ref, Fin_year, Amount, Balance, Date, Row)
as
(
select Acc_ref, Fin_year, Amount, Balance, Date,
row_number() over (partition by Acc_ref order by Acc_ref, date) as Row
from
your_table
)
select Acc_ref, Fin_year, Amount, Balance, Date, Row
from cteB
where Row = 1 and Fin_year = year(Date);