0

私の元の質問

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;

中間ポストの啓示

エラーが発生する理由を理解したと確信しています。それ"Loan"は、結合の on-clause と比較しているためですか?

その場合、クエリの出力で列名に「ローン」という単語を引き続き使用するにはどうすればよいですか?

4

1 に答える 1

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;
于 2011-07-31T20:57:11.083 に答える