Sql 获取上次交易日期的最后数据
我有一个需要显示最后一个事务数据行的事务表。 这是表格:Sql 获取上次交易日期的最后数据,sql,sql-server,tsql,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Tsql,Sql Server 2008,Sql Server 2008 R2,我有一个需要显示最后一个事务数据行的事务表。 这是表格: 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;
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 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
内部查询按降序日期对记录进行排序,并计算总数量。外部查询在顶部记录上进行筛选。欢迎使用堆栈溢出!请阅读文章的前几段,并相应地回答您的问题。