当一个表需要总和

时间:2015-06-04 11:50:45

标签: sql database db2

在DB2数据库中,我想使用SQL查询进行以下简单的数学运算:

  

可用库存=供应商 - DemandStock

SupplyStock存储在1行1表中,让我们称这个表为Supply表。 因此 Supply 表中包含以下数据:

ProductID | SupplyStock
---------------------
109            10
244             7  edit: exclude this product from the search

DemandStock存储在一个单独的表Demand中,其中记录需求,因为每个客户在客户订单旅程中记录需求。 Demand表中的示例数据:

ProductID | DemandStock 
------------------------
109            1
244            4  edit: exclude this product
109            6
109            2

因此,在我们的脑海中,如果我想计算产品'109'的可用库存,则供应量为10,产品需求量109总计为9,​​因此库存量为1。

如何在DB2 SQL中的一个选择查询中执行此操作?

到目前为止,我对PseudoCode中的一些想象步骤的知识:

  • 我选择SupplyStock,其中产品ID ='109'
  • 我选择产品ID ='109'
  • 的总和(DemandStock)
  • 我从DemandStock
  • 中减去SupplyStock
  • 我将此作为由此产生的可用库存

结果如下:

Product ID | AvailableStock
109                9

我希望在一个SQL选择查询中选择此选项。

编辑: 我收到了答案(这几乎是完美的),并意识到问题遗漏了一些信息。 此信息: 我们需要从我们不想选择数据的产品中排除数据,我们还需要专门选择产品109。 我道歉,原始问题中省略了这一点。 我已经添加了“where”来选择产品,这对我有用。但是为了将来,也许答案应该包括这些信息。

1 个答案:

答案 0 :(得分:1)

您可以使用join将表格合并在一起,group by汇总join的结果:

select s.ProductId, s.SupplyStock, sum(d.DemandStock),
       (s.SupplyStock - sum(d.DemandStock)) as Available
from Supply s left join
     Demand d
     on s.ProductId = d.ProductId 
where s.ProductId = 109
group by s.ProductId, s.SupplyStock;