【发布时间】:2021-07-06 12:40:28
【问题描述】:
我有 2 个表作为 Inward stock 和 Outward stock。我正在尝试为每个项目创建每日明智的开放、向内、向外和关闭库存。在任何选定的日子,我如何知道前一天的收盘价是多少?然后这成为选定日期的开盘股票。我没有将期初和期末库存存储在单独的表格中,因为我认为它的表格设计不好。
DECLARE @ItemsTable AS TABLE(Item INT,Size INT, Thickness INT, Unit INT);
DECLARE @CalendarItems AS TABLE(Item INT,Size INT,Thickness INT,Unit INT,Date_ DATE);
DECLARE @Inwards AS TABLE(InwardDate DATE, Item INT,Size INT,Thickness INT,Unit INT,Qty DECIMAL(10,2) );
DECLARE @Outwards AS TABLE(OutwardDate DATE, Item INT,Size INT,Thickness INT,Unit INT,Qty DECIMAL(10,2) );
INSERT INTO @ItemsTable
VALUES(1,0,4,19),
(1,0,4,19),
(2,0,4,17),
(2,0,4,17)
INSERT INTO @CalendarItems
VALUES(1,0,4,19,'2021-01-14'),
(1,0,4,19,'2021-01-15'),
(1,0,4,19,'2021-01-16'),
(1,0,4,19,'2021-01-17'),
(2,0,4,17,'2021-01-14'),
(2,0,4,17,'2021-01-15'),
(3,0,4,17,'2021-01-16'),
(4,0,4,17,'2021-01-17')
INSERT INTO @Inwards
VALUES('2021-01-14',1,0,4,19,50),
('2021-01-15',1,0,4,19,100),
('2021-01-14',2,0,4,17,60)
INSERT INTO @Outwards
VALUES('2021-01-15',1,0,4,19,40),
('2021-01-16',1,0,4,19,10),
('2021-01-16',2,0,4,17,50)
SELECT CT.Date_ [Date], CT.Item, CT.Size, CT.Thickness, CT.Unit, 0.0 Opening, ISNULL(INW.Qty,0) Inward, ISNULL(OW.Qty,0) Outward, 0.0 Closing
FROM @CalendarItems CT
LEFT JOIN @Inwards INW ON CT.date_ = INW.InwardDate AND CT.Item = INW.Item AND CT.Size = INW.Size AND CT.Thickness = INW.Thickness AND CT.Unit = INW.Unit
LEFT JOIN @Outwards OW ON CT.date_ = OW.OutwardDate AND CT.Item = OW.Item AND CT.Size = OW.Size AND CT.Thickness = OW.Thickness AND CT.Unit = OW.Unit
-
如何获取/计算 21 年 1 月 14 日的期初库存?
-
21 年 1 月 14 日的收盘股票与 21 年 1 月 15 日的开盘股票相比如何?
当前结果
+------------+------+------+-----------+------+---------+--------+---------+---------+
| Date | Item | Size | Thickness | Unit | Opening | Inward | Outward | Closing |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-14 | 1 | 0 | 4 | 19 | 0 | 50 | 0 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-15 | 1 | 0 | 4 | 19 | 0 | 100 | 40 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-16 | 1 | 0 | 4 | 19 | 0 | 0 | 10 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-17 | 1 | 0 | 4 | 19 | 0 | 0 | 0 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-14 | 2 | 0 | 4 | 17 | 0 | 60 | 0 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-15 | 2 | 0 | 4 | 17 | 0 | 0 | 0 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-16 | 3 | 0 | 4 | 17 | 0 | 0 | 0 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-17 | 4 | 0 | 4 | 17 | 0 | 0 | 0 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
预期结果
+------------+------+------+-----------+------+---------+--------+---------+---------+
| Date | Item | Size | Thickness | Unit | Opening | Inward | Outward | Closing |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-14 | 1 | 0 | 4 | 19 | 0 | 50 | 0 | 50 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-15 | 1 | 0 | 4 | 19 | 50 | 100 | 40 | 110 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-16 | 1 | 0 | 4 | 19 | 110 | 0 | 10 | 100 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-17 | 1 | 0 | 4 | 19 | 100 | 0 | 0 | 100 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-14 | 2 | 0 | 4 | 17 | 0 | 60 | 0 | 60 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-15 | 2 | 0 | 4 | 17 | 60 | 0 | 0 | 60 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-16 | 3 | 0 | 4 | 17 | 0 | 0 | 0 | 0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
| 2021-01-17 | 4 | 0 | 4 | 17 | 0 | 0 | 0 | 0.0 |
+------------+------+------+-----------+------+---------+--------+---------+---------+
请注意,当项目更改时,期初库存设置为 0
【问题讨论】:
-
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。
-
为什么关店和开盘,它们会是一回事?
-
同意,更新了图片。谢谢!
-
@Charlieface - 目前我没有在任何地方存储打开或关闭。试图从内向外计算。
-
如果您提供您的 DDL+DML,即声明
CalendarItems并插入,我们将更容易为您提供帮助。
标签: sql sql-server tsql