首页 > 解决方案 > 获取最后交易日期的最后数据

问题描述

我有一个需要显示最后一个事务数据行的事务表。这是表格:

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

但它没有显示在组中。

标签: sqlsql-servertsqlsql-server-2008sql-server-2008-r2

解决方案


您可以使用窗口函数:

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

内部查询按日期降序排列记录并计算总数。外部查询过滤顶部记录。


推荐阅读