用于在指定逻辑中组合来自两个源的数据的SQL查询

时间:2015-08-13 13:22:28

标签: sql sql-server

我的SQL服务器设置中有三个表。 其中两个表格如下:

Product  Substitute  
  XXX       ABC      
  YYY       XYZ         

表二与表一类似,但列出了替代品。

Product   Alternate  
 XXX       OPPP     
 YYY       FTTT        

我有一张主表,其中包含所有产品的数量(包括替换和替代品):

Product   Quantity
  XXX       52
  YYY       84
  ABC       180
  XYZ       220
 OPPP       590
 FTTT       760

现在我需要一个SQL查询来列出每个主要部件号的可用部件总数。例如,输出查询应如下所示:

Product    Quantity     
  XXX        822
  YYY       1064

这是XXX的总金额= XXX总数+ ABC总数+ OPPP总数。

1 个答案:

答案 0 :(得分:3)

您首先获得所需的所有数据(使用union all的内部查询)。

然后按产品分组整个数据集。

Select Product, Sum(Quantity)
From (
    Select Product, Quantity From master
    Union All
    Select a.Product, m.Quantity From master as m
    Inner join alternates as a on A.alternate = m.product
    Union All
    Select s.Product, m.Quantity From master as m
    Inner join Substitute as s on s.Substitute = m.product
) as p
Group By Product