我有2个数据库表。跟踪向公司发出订单的位置,另一个跟踪向公司支付订单的付款。SQL语句中的语法错误
我想创建一个SQL查询,它显示每个订单ID,订单总金额以及尚未付款的未完成订单金额。 客户被允许支付“分期付款”说,因此,目的是计算未付的总额并显示它。
这是我到目前为止,但是它没有付款时返回'null'。这显然意味着没有基于特定订单的记录,因此客户支付的总金额= 0。因此,未付金额等于总金额。
我想我的sql代码显示订单的总金额,当整个金额仍未完成时,而不是null。
这怎么办?
我试过一个case语句,但我认为我的语法是错误的。
这里没有case语句的版本,在没有支付已经发生,返回null:
SELECT
pb_orders.id AS 'Order ID', pb_orders.order_total AS 'Total',
SUM(pb_payments.amount) AS 'Amount Paid', pb_orders.order_total -
SUM(pb_payments.amount) AS 'Outstanding Amount'
FROM
pb_orders
INNER JOIN
pb_payments ON pb_orders.id = pb_payments.link_id
WHERE
pb_orders.id = 1556
这里是我的case语句尝试:
SELECT
pb_orders.id AS 'Order ID', pb_orders.order_total AS 'Total',
SUM(pb_payments.amount) AS 'Amount Paid'
WHEN 'Amount Paid' = 'NULL'
THEN 'Amount Paid' = pb_orders.order_total,
pb_orders.order_total - SUM(pb_payments.amount) AS 'Outstanding Amount',
FROM
pb_orders
INNER JOIN
pb_payments ON pb_orders.id = pb_payments.link_id
WHERE
pb_orders.id = 1555
我删除了多余的数据库标签。随意为您实际使用的数据库添加标签。 –
奇怪,你甚至说你正在使用'CASE',但我没有在任何地方看到'CASE' – Lamak
看起来像是case case语句的一部分(例如'WHEN'和'THEN',但你没有't包括'CASE'和'END') – Bridge