我原来的问题
当我在SQLite中执行以下查询时,出现此错误:
查询错误:滥用聚合:sum()无法执行语句
当我将"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"
进行比较?
如果是这样,我如何在查询输出中仍然使用“贷款”一词作为我的列名?
答案 0 :(得分: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;