sql - 获取最后交易日期的最后数据
问题描述
我有一个需要显示最后一个事务数据行的事务表。这是表格:
Table Name : Product_detail_trx
Trans_date; Prod_Code; Outlet_code; Qty; Prev_bal_qty;
2020-02-26; SKU1; CNGI; 2; 1;
2020-02-20; SKU1; CNGI; -3; 4;
2020-02-29; SKU1; CNGI; 5; 3;
我想得到最后一个 trans_date 与 qty 和它的总和prev_bal_qty
。
数据必须像这样显示:
Trans_date Outlet_Code Qty_Total Prev_bal_qty
2020-02-29; CNGI; 4; 3;
我尝试过了
select Max trans_date, sum (qty) as total_qty, prev_bal_qty
group by prod_code, outlet_code, prev_bal_qty
但它没有显示在组中。
解决方案
您可以使用窗口函数:
select trans_date, outlet_code, qty_total, prev_bal_qty
from (
select
p.*,
sum(qty) over() total_qty,
row_number() over(order by trans_date desc) rn
from product_detail_trx p
) p
where rn = 1
内部查询按日期降序排列记录并计算总数。外部查询过滤顶部记录。