-2

我想执行多个选择查询以及 for 和 if 循环。

表:A:Orderno、ContractNo

B: ContractNo, ItemNo, Price, TotalAmount

C: OrderNo, ITemNo, 数量

一份合约可以有多个订单(合约和订单是一对多的关系)。我只有 ItemNo 和 ContractNo 作为输入。

下面是我的伪代码。

    Find the total amount for the item no from table B. 
    List the orders for the same contract.
    Foreach(orderno in orders)
        List items in orderno
        if(itemno matches 1)
        get the quantity (which is equal to totalamount/price)
    End
    Print quantity

我是 Oracle 的新手,我想这可以通过存储过程来完成,但我不确定它是否可以满足伪代码的要求。任何人都可以建议或告诉我什么可以用来执行这段代码吗?

4

1 回答 1

0

我想获得合同中每个订单号(行)的总项目数量值。我想知道如何在单个查询中完成

SELECT o.contractid, SUM(i.quantity)
FROM 
  orders o
  JOIN orderitems i ON i.orderid = o.orderid
WHERE
  i.itemno = 1
GROUP BY 
  o.contractid

不言而喻,但是..由于您没有准确发布您拥有的表和列名,我不得不猜测一些事情

您似乎有分配给合同的订单。因此,我假设一个订单有一个 ContractId。

订单中的项目似乎有数量 - 因此项目就像订单上的行详细信息。例如,如果服务器中有 4 根 ram,则服务器的订单有一个内存行项目,数量为 4

您只需要 ID 1 的项目。如果一个合约有 3 个订单,每个订单有 4 个服务器,每个服务器有 8 根 ram(即 ID 1),那么那里的查询会得到您的合约 C1,总数量为96 - 3 个订单 * 4 个服务器 * 8 个棒 = 96。如果有 2 个合同,c1(我们已经提到过)和 c2,如果 c2 是 5 个订单的 1 个服务器和 2 个 ram,那么你的 2 行结果,一个 96 和一个 10

于 2021-08-05T14:13:28.927 回答