sql保留产品的发票总数

sql保留产品的发票总数,sql,Sql,这是预订的桌子: res_nr product_nr price amount customer_id 1000 20 15 1 4000 1001 21 10 5 5055 这是发票表: seq_nr invoice_nr product_nr price amount res_nr 500 222 1

这是预订的桌子:

res_nr   product_nr  price   amount  customer_id
1000        20        15       1       4000
1001        21        10       5       5055
这是发票表:

seq_nr    invoice_nr      product_nr    price     amount    res_nr
500         222             12          5           1        null
501         223             20          10          3        1001
502         223             89          25          1        null
我需要编写一个带有join的查询,以便保留所有内容。在总发票中,我应该有包含保留产品的总发票

res_nr   total_reserve (price*amount)   total_invoice (price*amount)
1000             15                              null       
1001             50                              55
对于res_nr 1001,客户保留了5种21号产品。但他只购买了其中的3件+非保留产品nr 89的1件。发票号码223 假设r.res_nr在保留表中是唯一的,我认为应该是这样的:

选择r.RESU nr,r.price*r.amount作为[总准备金],即总发票 从保留为r 内连接 选择j.RESU nr,SUMj.price*j.amount作为[总发票] 从发票上取j 由j.res_nr分组 当i在r.res\u nr=i.res\u nr上时
你可以找到一个指示性的解决方案

您可以通过执行2左连接来获得输出。临时表在子查询中创建,并计算每个发票的总额。此信息以发票号为键链接到原始发票表。只有这样,您才能以资源号为键加入保留表

SELECT R.res_nr, R.price*R.amount AS reserved_total, temp.invoice_total
FROM Reserved AS R
LEFT JOIN invoice AS inv
ON R.res_nr=inv.res_nr
LEFT JOIN (
  SELECT invoice_nr, SUM(price*amount) AS invoice_total
  FROM invoice
  GROUP BY invoice_n
  )temp
ON inv.invoice_nr = temp.invoice_nr

如何计算1001号存货的发票总价值55?同样,res_nr 1001是保留产品编号21,但在发票表中它使用产品编号20。正如我所写,客户保留了5。但他只购买了3件21号3*10的产品,并以25的价格购买了1件未保留的89号产品。30+25=55您应该包括使用tsql、oracle等的sql版本