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版本