1
考虑下面的代码:如何计算两个别名的差异进行排序
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)
我在做什么错误,我如何使用两个别名之间的差值来排序结果?
有在哪里/当你可以用这样的别名限制。这是其中之一。你必须将整个别名表达式复制到'order by'中。或者可能包裹另一个查询,并订购“元”结果。 –
您的提示将别名表达式复制到表达式的顺序中,显示了我解决这个问题的正确方法。非常感谢您的帮助。我想赞扬你,但是我不可能这样做,因为这是一个评论。 –
你确定这是MySQL吗?在ORDER BY子句中使用别名时,MySQL通常没有问题,在MS SQL(不确定Oracle)中,不能使用别名并且必须重复表达式。 – Uueerdo