刚刚开始实习并且已经完成了一些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
| | | |
Run Code Online (Sandbox Code Playgroud)
我到目前为止的代码是
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
Run Code Online (Sandbox Code Playgroud)
我认为这是在sum()函数中计算正确的总数?或者我错了?如何添加open_invoice_total和open_orders_total?然后将它们与credit_limit进行比较?
我希望你们明白我要做的事情.我在这里先向您的帮助表示感谢!:)
我正在使用oracle DB并且需要在其中操作字符串列.该列包含以下格式的多个电子邮件地址:
jgooooll@gmail.com; dhookep@gmail.com; amoore@outlook.com
我想要做的是拿出最后没有 '@ gmail.com'的东西(在这个例子中amoore@outlook.com将被删除)但是amoore@outlook.com可能是下一行中的第一封电子邮件因此以这种方式没有真正的固定格式,唯一的格式是每个地址用分号分隔.
无论如何通过一个命令实现这一点来贯穿列中的每一行并删除任何不是@ gmail.com的东西?我不确定SQL中是否可以进行这种处理.只是在寻找你的想法!!
非常感谢你们.期待您的来信!