【问题标题】:SQL Query to split shipping cost over multiple items / rowsSQL 查询将运费拆分到多个项目/行
【发布时间】:2012-11-08 15:21:22
【问题描述】:

我正在尝试创建一个查询,允许我将单个图形拆分为多行。

例如,采购订单 x 可能有 15 个项目分配给它。例如,运费是 9.95。如何计算 9.95 的 1/15,然后用 1/15 的运费更新库存的成本价格?

因此,该项目的成本价格将从 4.50 增加到 5.16 (4.50 + 0.66)。

【问题讨论】:

  • 你能提供一个样本表来保存这些数据吗?
  • 给你... [Purchase Order] POID, CustID, PODate, Supplier [POSTtock] LinkID, PONo, StockCode, PurchasePrice 我想用运费的份额更新采购价格.
  • 你在使用什么 rdbms? sql server、oracle、mysql?
  • 您应该考虑按产品重量(如果您存储了该信息并且这些是有形产品)或产品成本来衡量您的平均值。如果您的采购订单的第 1 行是 20 件每件价值 20 磅或 20.00 美元的物品,那么它应该比第 2 行的 20 件不同的每件价值 2 磅或 2.00 美元的物品获得更多的运费。

标签: sql sql-server sql-server-2005 split


【解决方案1】:

以下是 SQL Server 的解决方案:

update  ol
set     price = price + 5.0 / ol.LineCount
from    [Order] o
join    (
        select  *
        ,       count(*) over () as LineCount
        from    OrderLine
        ) ol
on      o.ID = ol.OrderID
where   o.OrderNr = 'Ord1';

Live example at SQL Fiddle.

如果您使用的是其他 DBMS,请更新您的帖子!

【讨论】:

    【解决方案2】:

    我创建了一个产品表并更新了商品的运费。 希望这就是你要找的。​​p>

    INSERT INTO [TravelAgentDB].[dbo].[Product]
               ([ID]
               ,[Name]
               ,[Price]
               ,[shippingPrice])
         VALUES
              (1,'Nexus 7' , 250 , 20),
              (2,'Nexus 7 case' , 50 , 20),
              (3,'Nexus 7 headphone' , 20 , 20)
    GO
    
    
    select * from product
    Declare @itemsCount int
    Select @itemsCount = count(*) From product where id in (1,2,3)
    Declare @totalShippingPrice Decimal(18,2) = 9.95
    Declare @shippingPriceperItem Decimal(18,2) = @totalShippingPrice / @itemsCount
    
    Update Product 
    set [shippingPrice] = @shippingPriceperItem
    Where id in (1,2,3)
    select * from product
    

    【讨论】:

    • 谢谢 Sayed,我已将其全部简化为一条 SQL 语句,如下所示: UPDATE [STOCK - DETAIL] set CostPrice = CostPrice + round((9.00 / (select count(*) from [STOCK - DETAIL) ] 其中 PONo = 2971)),2) 其中 PONo = 2971
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2015-12-14
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多