【发布时间】:2012-11-11 18:02:33
【问题描述】:
刚开始实习,并负责一些 SQL。发现它有些棘手。感谢任何帮助。谢谢!
任务:
“是否可以为以下内容编写警报。显示所有客户,当下个月到期的未结销售订单与未结销售发票合并(添加)时,他们超出了他们的信用额度。”
我提出的逻辑:
首先,我要做的是对每个客户(在 SALES 表中)在下个月内的所有销售订单求和。
接下来,汇总每个客户的所有未结发票,即计算出每个客户欠的总金额(在 INVOICES 表中)。
然后我想通过对应的customer_id将1和2的结果相加
接下来比较上面3的计算,看是否大于每个客户的信用额度。
如果 3 中的总和超过信用额度,则生成的表格中应仅显示这些公司。结果表的理想格式是
Cust_ID|Name|Sum_sales_orders (1.above)|Sum_open_invoices (2.above)| Total_orders&invoices
----------------------------------------------------------------------------
1 | A | 25000 | 333 | 25333
| | | |
我目前的代码是
SELECT arc.company, arc.credit_limit,
sum (ard.unit_price * ard.invoice_qty) as open_invoice_total,
sum (od.total_qty_ord * od.unit_price) as open_orders_total
FROM iqms.arprepost_detail ard, iqms.arprepost arp, iqms.arcusto arc, iqms.ord_detail od, iqms.orders o
WHERE ard.arprepost_id = arp.id
and arc.id = o.arcusto_id and o.id = od.orders_id
and arp.arcusto_id = arc.id
GROUP BY arc.company, arc.credit_limit
我认为这是在 sum() 函数中计算正确的总数?还是我错了?如何添加 open_invoice_total 和 open_orders_total?然后将它们与 credit_limit 进行比较?
我希望你们明白我想要做什么。我在这里先向您的帮助表示感谢! :)
【问题讨论】:
-
SELECT arc.company.......GROUP BY .....HAVING sum (ard.unit_price * ard.invoice_qty) + sum (od.total_qty_ord * od.unit_price) >arc.credit_limit