Power BI中按日期筛选时获取各Werk物料最新库存值的方法
按Werk维度获取指定日期前的物料最新库存记录
核心思路
先筛选出所有日期不晚于目标日期的库存记录,再针对每个Werk+material组合,找出其中日期最新的那条记录。
方法一:使用窗口函数(推荐,适用于MySQL 8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)
SELECT Werk, material, description, stock, `$$`, date FROM ( SELECT *, -- 按Werk和物料分组,组内按日期倒序生成排名 ROW_NUMBER() OVER (PARTITION BY Werk, material ORDER BY date DESC) AS rn FROM inventory -- 过滤出目标日期及之前的记录 WHERE date <= @target_date ) t -- 取每个分组的第一条(最新日期)记录 WHERE rn = 1;
- 替换
@target_date为实际要筛选的日期(比如202311) - 表名
inventory替换为你的实际表名 $$是特殊字段名,需用反引号/双引号转义,避免语法错误
方法二:使用关联子查询(适用于不支持窗口函数的老版本数据库)
SELECT i1.Werk, i1.material, i1.description, i1.stock, i1.`$$`, i1.date FROM inventory i1 WHERE i1.date <= @target_date -- 确保当前记录是该Werk+物料下,目标日期前的最新记录 AND NOT EXISTS ( SELECT 1 FROM inventory i2 WHERE i2.Werk = i1.Werk AND i2.material = i1.material AND i2.date <= @target_date AND i2.date > i1.date );
- 逻辑说明:找到所有在目标日期前,且不存在同Werk同物料、日期更新且不超过目标日期的记录,这类记录就是对应组合的最新库存。
内容的提问来源于stack exchange,提问作者KLM
相关产品推荐
相关产品推荐

