2017-01-13 48 views
4

我有一個表「campaign_items」與列(預算,花費),我想使用公式計算剩餘預算 剩餘預算=預算 - 花費錯誤:對於SELECT DISTINCT,ORDER BY表達式必須出現在選擇列表中

現在我正在下面的查詢:

select distinct a.budget,a.spent 
from campaign_items a 
where campaign_item_id=12345 
order by a.budget-a.spent 

但我得到的錯誤:

ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list

注:我不能去除DISTINCT關鍵字來自查詢,因爲查詢是使用JdbcTemplate生成的

任何人都可以幫我解決這個錯誤嗎?

+0

http://stackoverflow.com/questions/12693089/pgerror-select-distinct-order-by-expressions-must-appear-in-select-list的可能的複製。我認爲它接受的答案很大程度上解釋了發生的事情。 –

回答

5

我認爲錯誤的根本原因是您使用ORDER BY a.budget - a.spent進行排序,但該表達式不出現在SELECT子句中。在下面的查詢中,我使用包含計算列進行排序的子查詢,但只選擇budgetspent列。

select t.budget, t.spent 
from 
(
    select distinct a.budget, 
        a.spent, 
        a.budget - a.spent as sort, 
    from campaign_items a 
    where campaign_item_id = 12345 
) t 
order by t.sort 
相關問題