2011-07-31 15 views
0

我的原始問題如何在我的sqlite查詢輸出中使用相同的名稱作爲我在join的ON子句中進行比較的值?

當我在SQLite中執行以下查詢時,我收到此錯誤:

Query Error: misuse of aggregate: sum() Unable to execute statement

當我將"Loan"列的名稱更改爲loan_amount時,錯誤就消失了查詢工作正常。爲什麼"Loan"有問題?

select 
    t.* 

    , coalesce(sum(ded0.after_tax_ded_amt), 0) as "Loan" 

    , coalesce(sum(ded1.after_tax_ded_amt), 0) as ee_advance_amount 

from totals t 

    left join totals as ded0 
    on t.ee_ssn = ded0.ee_ssn 
    and t.deduction_code = "Loan" 
    and ded0.deduction_code = "Loan" 

    left join totals as ded1 
    on t.ee_ssn = ded1.ee_ssn 
    and t.deduction_code = "EE Advance" 
    and ded1.deduction_code = "EE Advance" 

group by t.ee_ssn; 

中期啓示

我很確定我弄明白爲什麼會收到錯誤,是因爲我在連接的on-clause中與"Loan"進行比較?

如果是這樣,我怎樣才能在查詢輸出中使用「Loan」這個詞作爲我的列名?

回答

0

我猜你真正的問題是報價誤用。 SQL中的單引號用於引用字符串文字,雙引號用於引用需要區分大小寫或包含奇數字符的列名和表名。 SQLite相當寬容的奇語法,所以它可能猜測什麼"Loan"意味着猜測不正確。試試這個:

select 
    t.* 
    , coalesce(sum(ded0.after_tax_ded_amt), 0) as "Loan" 
    , coalesce(sum(ded1.after_tax_ded_amt), 0) as ee_advance_amount 
from totals t 
    left join totals as ded0 
    on t.ee_ssn = ded0.ee_ssn 
    and t.deduction_code = 'Loan' 
    and ded0.deduction_code = 'Loan' 
    left join totals as ded1 
    on t.ee_ssn = ded1.ee_ssn 
    and t.deduction_code = 'EE Advance' 
    and ded1.deduction_code = 'EE Advance' 
group by t.ee_ssn; 
相關問題