2014-01-07 15 views
0

我有查询,如下所示如何ORDER BY中的字段别名为

SELECT 
    final_avg_total.`Provider Name`, 
    ROUND(SUM(final_avg_total.avg_total_payments), 2) AS avg_payments, 
    ROUND(SUM(final_avg_total.avg_covered_charges), 2) AS avg_covered, 
    (SUM(final_avg_total.avg_covered_charges) - SUM(final_avg_total.avg_total_payments))/SUM(final_avg_total.avg_covered_charges) AS total_average, 
    1 - (SUM(final_avg_total.avg_covered_charges) - SUM(final_avg_total.avg_total_payments))/SUM(final_avg_total.avg_covered_charges) AS total_percentage 
FROM final_avg_total 
GROUP BY final_avg_total.`Provider Id` 
ORDER BY final_avg_total.`avg_payments` DESC 

我想通过与别名avg_payments以下字段做订单,但我得到这个错误。

Unknown column avg_payments in the order by clause 

回答

2

avg_payments不是表中的字段。只是删除表的别名:

ORDER BY avg_payments DESC 

MySQL的理解列的别名在order by语句。

+0

我想通过'ROUND(SUM(final_avg_total.avg_total_payments),2)AS avg_payments'申请订单,如果我照你说的做我没有得到要求的答案 –

+0

你遇到的问题是什么? –

+0

啊愚蠢的错误,你是对的。 –

1

avg_payments不是final_avg_total的属性,可能只是做:

ORDER BY avg_payments DESC 
+0

我想通过对'ROUND(SUM(final_avg_total.avg_total_payments),2)AS avg_payments',如果我这样做你说我没有得到必要的答案 –

1

您可以尝试

order by 2. 

1表示在SELECT语句的顺序位置是final_avg_total。 Provider Name然后2将意味着它是avg_payments。

注意:这只适用于mysql,如果我没有弄错。

希望这有助于。