如何计算两个别名的差异以进行排序
How do I calculate the difference of two alias for sorting
考虑以下代码:
SELECT SUM(w.valor),
SUM(CASE WHEN w.tipo = '+' THEN w.valor ELSE 0 END) AS total_credit,
SUM(CASE WHEN w.tipo = '-' THEN w.valor ELSE 0 END) AS total_debit,
w.clientUNIQUE,
c.client as cclient
FROM wallet AS w
LEFT JOIN clients AS c ON w.clientUNIQUE = c.clientUNIQUE
WHERE w.status='V'
GROUP BY w.clientUNIQUE
ORDER BY total_credit-total_debit
我正在尝试计算两个别名计算值的差值以进行排序,但出现以下错误:
Reference 'total_credit' not supported (reference to group function)
我哪里做错了,如何使用两个别名之间的差值对结果进行排序?
您不能在同一 select 表达式中通过别名引用列,因此有 2 个选项...
重复 order by
中的表达式(yuk):
ORDER BY
SUM(CASE WHEN w.tipo = '+' THEN w.valor ELSE 0 END) AS total_credit -
SUM(CASE WHEN w.tipo = '-' THEN w.valor ELSE 0 END) AS total_debit
或者更容易大脑和更容易维护(DRY),通过子查询订购:
select * from (
<your query without the ORDER BY>
) q
ORDER BY total_credit - total_debit
考虑以下代码:
SELECT SUM(w.valor),
SUM(CASE WHEN w.tipo = '+' THEN w.valor ELSE 0 END) AS total_credit,
SUM(CASE WHEN w.tipo = '-' THEN w.valor ELSE 0 END) AS total_debit,
w.clientUNIQUE,
c.client as cclient
FROM wallet AS w
LEFT JOIN clients AS c ON w.clientUNIQUE = c.clientUNIQUE
WHERE w.status='V'
GROUP BY w.clientUNIQUE
ORDER BY total_credit-total_debit
我正在尝试计算两个别名计算值的差值以进行排序,但出现以下错误:
Reference 'total_credit' not supported (reference to group function)
我哪里做错了,如何使用两个别名之间的差值对结果进行排序?
您不能在同一 select 表达式中通过别名引用列,因此有 2 个选项...
重复 order by
中的表达式(yuk):
ORDER BY
SUM(CASE WHEN w.tipo = '+' THEN w.valor ELSE 0 END) AS total_credit -
SUM(CASE WHEN w.tipo = '-' THEN w.valor ELSE 0 END) AS total_debit
或者更容易大脑和更容易维护(DRY),通过子查询订购:
select * from (
<your query without the ORDER BY>
) q
ORDER BY total_credit - total_debit