【问题标题】:Calculation of rank according to supplier table & sales table根据供应商表和销售表计算排名
【发布时间】:2019-07-31 12:11:35
【问题描述】:

我正在使用 SQL Server 2014;我附上了一张purchase 表(来自供应商)和销售表。

首先,我需要使用一个基于采购表的排名的销售表,先从供应商表购买的产品在销售表中先销售(先进先出法)。

我如何进行这些计算?

附件是purchase 表中的排名计算。

谢谢。

表格:

CREATE TABLE Purchases
(
     PurID INT,
     ItemID VARCHAR(5),
     Qty INT,
     UnitPrice INT
)

INSERT INTO Purchases (PurID, ItemID, Qty, UnitPrice) 
VALUES ('1', 'A', '50', '3'),
       ('2', 'A', '60', '2'),
       ('3', 'A', '90', '6'),
       ('5', 'B', '5', '5'),
       ('6', 'B', '15', '4')

CREATE TABLE Sales_5
(
     InvID INT,
     ItemID VARCHAR(5),
     Qty INT,
     UnitPrice_Fifo INT
)

INSERT INTO Sales_5 (InvID, ItemID, Qty, UnitPrice_Fifo)
VALUES ('1', 'A', '100', '250'),
       ('2', 'A', '100', '560'),
       ('5', 'B', '10', '45'),
       ('6', 'B', '10', '40')

表购买排名:

 with PurchasesbyFifo AS 
 (
     select 
         itemid,
         Purid,
         rank () over (partition by itemid order by Purid ASC) as rank_BY_Fifo 
     from
         [Purchases] 
 )

【问题讨论】:

  • 请在问题中作为文本表格提供示例数据和所需结果。另外,解释你想要实现的逻辑。
  • @syyt,请提供加入密钥以及所需的输出。

标签: sql sql-server


【解决方案1】:

试试这个...

选择 X.* 从 ( 选择 P.ItemID, P.PurId, 排名 () 超过 ( 分区依据 ( 选择最小值(S.InvID) 来自Sales_5 As S With(NoLock) 其中 S.ItemID = P.ItemID ) 由 P.PurId ASC 订购 ) 作为rank_BY_Fifo 从作为 P 购买(无锁) ) 作为 X 按 rank_BY_Fifo 排序

【讨论】:

  • 在您提供的示例库之后,我想我明白了,提前致谢
【解决方案2】:

我认为,您需要在表格中添加“购买日期”和“销售日期”列。

FIFO(先进先出)方法使用移动日期值来订购数据。

因为,移动表的唯一 ID 列不等于现实世界中的移动顺序(通常)。

使用毫秒详细的日期时间值。

【讨论】:

  • 很遗憾,我在购买表中没有日期列 如何使用 PUID 列作为第一个产品评级 Sold in sales 表?
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多