1

以下のクエリで問題が発生しました。「カテゴリ」フィールドがA、B、Cのいずれであるかを判断し、カテゴリに基づいてフィールドを作成しようとしています。そのフィールドは、支払いフィールドを合計します。しかし、「キーワードAsの近くの構文が正しくありません」というエラーが発生しています。これをSQLビューで作成しています。SQLServer2008の使用

SELECT r.id, r.category
CASE 
WHEN r.category = 'A' then SUM(r.payment) As A_payments 
WHEN r.category = 'B' then SUM(r.payment) As B_payments
WHEN r.category = 'C' then SUM(r.payment) As C_payments
END
FROM r_invoiceTable As r
GROUP BY r.id, r.category

私が持っているデータにはA、B、Cがあるので、上記のすべてのケースを実行する必要があるデータがあります

サンプルデータ-r_invoiceTable

Id --- Category ---- Payment
222      A      ----   50
444      A      ----   30
111      B      ----   90
777      C      ----   20
555      C      ----   40

必要な出力A_payments=80、B_payments = 90、C_payments = 60

4

3 に答える 3

4

おそらくあなたはこれを探しています:

SELECT
  SUM(CASE WHEN category = 'A' THEN payment END) AS A_payments,
  SUM(CASE WHEN category = 'B' THEN payment END) AS B_payments,
  SUM(CASE WHEN category = 'C' THEN payment END) AS C_payments
FROM r_invoiceTable
于 2012-04-06T17:25:44.573 に答える
1

これ(カテゴリごとの支払い額)が必要な場合がありますか?:

SELECT r.category, SUM(r.payment) As Payments 
FROM r_invoiceTable As r
GROUP BY r.category

出力は次のようになります。

category     Payments
---------   ------------
    A          80
    B          90 
    C          60 

これらの数字を1行で気に入った場合は、単純なアプローチです。

SELECT 
   (SELECT SUM(r.payment) From r_invoiceTable As r Where r.category = 'A') as A_Payment,
   (SELECT SUM(r.payment) From r_invoiceTable As r Where r.category = 'B') as B_Payment,
   (SELECT SUM(r.payment) From r_invoiceTable As r Where r.category = 'C') as C_Payment
于 2012-04-06T16:53:17.680 に答える
1
SELECT *
FROM dbo.r_invoiceTable
PIVOT
( SUM(payment)
FOR category IN ([a],[b],[c])
) AS pivoted
于 2012-04-06T17:24:47.563 に答える