首页 > 解决方案 > 基于多列平均列

问题描述

我正在尝试计算库存可用时所有日子的平均库存变动。我有一个根据日期的股票变动清单。例如:

日期 物品 数量在 数量
今天-3 项目 1 10 0
今天-3 项目 1 10 0
今天-3 项目 1 0 20

我也知道每个项目的当前库存水平。使用该信息,我每天为每个项目提取以下信息:期初库存水平、库存移动、库存移动。因此,例如:

项目
描述
Today-3
O/S
今天-3
S/In
今天 - 3
S/Out
Today-2
O/S
今天-2
S/In
Today-2
S/Out
Today-1
O/S
今天-1
S/In
Today-1
S/Out
今日
操作系统
今天
进/进
今天
S/Out
今日
C/股票
项目 1 0 20 20 0 0 0 0 20 10 10 0 10 0

我想对每行中的缺货列进行平均,但忽略没有可出售库存的日子(例如第 2 天)。所以,我想在 (O/S + Qty In) > 0 的日子里取 Qty Out 的平均值。有谁知道如何做到这一点?更好的是,有没有更笨拙的方法来实现我的目标?我仍然对 SQL 很陌生,并且总是觉得我给自己带来了很多痛苦。

这是我目前查询的基本结构。

SELECT
    [Description_1]
    , MAX([Qty_On_Hand]) - isnull(sum(case when [TxDate] = "Today" then [QtyIn] end), 0) + isnull(sum(case when [TxDate] = "Today" then [QtyOut] end), 0) 'Today O/S'
    , isnull(sum(case when [TxDate] = "Today" then [QtyIn] end), 0) 'Today S/In'
    , isnull(sum(case when [TxDate] = "Today" then [QtyOut] end), 0) 'Today S/Out'
    , MAX([Qty_On_Hand]) AS 'Today C/Stock'
FROM [Transactions]
WHERE TrCode in ("Codes I want")
GROUP BY [Description_1] 

我将把这个查询拉到 Power BI 采购仪表板中。该信息将用作重新排序计算的一部分。

标签: sqlsql-servertsql

解决方案


推荐阅读