【问题标题】:Opening and closing stock打开和关闭库存
【发布时间】:2018-01-10 12:18:45
【问题描述】:

我有如图所示的数据,我需要打开和关闭库存数据。

输入数据

WAREHOUSECODE   PRODUCT_CODE    STOCK_DATE  QUANTITY    STOCKVALUE_SC
    B12           2210008       31-DEC-17     2.5           10.815
    B12           2210008       31-DEC-17     5             21.63
    B12           2210008       08-JAN-18    -1             -4.326
    B12           2210008       08-JAN-18     1              4.326
    B12           2210008       08-JAN-18    -1             -4.326

预期输出

PRODUCTKEY  WAREHOUSECODE   PRODUCT_CODE    STOCK_DATE  OPENING_STOCK   TRANSACTION_Qty CLOSING_STOCK   
B12-2210008     B12             2210008     31-DEC-17         0              7.5            7.5
B12-2210008     B12             2210008     08-JAN-18         7.5            -1             6.5

感谢您的支持。

问候, 维雷什

【问题讨论】:

  • 请查看How to Ask
  • 阿伦是对的。问题的第一个版本更好(使用数据而不是图像)。我必须在您编辑之前复制数据,这就是我能够回答的原因。没有人愿意从图像中复制数据。

标签: sql oracle


【解决方案1】:

我假设您使用的是 SQL Server 2008 R2 或更高版本。

这是一种使用窗口函数的方法:

with raw_data as (
  select
   warehousecode + convert(varchar(10), product_code) as productKey,
   warehousecode,
   product_code,
   stock_date,
   sum(quantity) as transaction_qty
  from Stock
  group by warehousecode, product_code, stock_date
)
select 
  productKey,
  warehousecode,
  product_code,
  stock_date,
  sum(transaction_qty) over (
    partition by productKey
    order by stock_date
  ) - transaction_qty as opening_stock,
  transaction_qty,
  sum(transaction_qty) over (
    partition by productKey
    order by stock_date
  ) as closing_stock
from raw_data
;

SQLFiddle:http://sqlfiddle.com/#!6/29064/12

【讨论】:

  • 谢谢,下次我肯定会粘贴数据而不是提供图像。顺便说一句,我正在使用带有 SQL Developer IDE 的 oracle db。我需要对脚本进行任何更改吗?谢谢。
  • @viresh 可能需要进行一些更改。我不使用Oracle,也不知道具体的语法。
  • 我可以修改查询并且看起来不错。需要进行一个小的修改。在计算收盘库存时,我可以根据该特定日期的最大库存日期而不是显示该特定日期的所有交易来获得收盘库存。感谢大家的支持。
  • 您好,请问如何实现上述要求?
  • @viresh 你能提供一个 SQLFiddle 来说明当前的进度吗?
猜你喜欢
  • 2016-08-10
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2019-12-31
  • 2017-02-01
  • 1970-01-01
相关资源
最近更新 更多