【发布时间】:2016-01-27 20:26:52
【问题描述】:
我有 2 个数据库表。一个跟踪向公司下达的订单,另一个跟踪向公司支付的订单。
我想创建一个 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
这是我对案例陈述的尝试:
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 -
看起来有部分 case 语句的语法(例如
WHEN和THEN,但你没有包括CASE和END)
标签: sql