0

「支払い」と「支払い1」のテーブルがあります。両方のテーブルに結合があります。

Payments:
-----------
id  type  amount values
1    A     10     x
2    B     20     y
2    A     30     z

IDとタイプでグループ化しようとしています。次のような結果が得られるように

id   type  total_amount type1 total_amount(sum)
-----------------------------------------------
1     A      10                             
2     A      20           B       30      

私は次のクエリを試しました

select 
case when r.type = 'A' then @payment+sum(r.amount) end  as total_amount,
case when r.type = 'B' then @refund+sum(r.amount) end as total_amount(sum)
from payments r

しかし、CASEでは、1つのタイプに対してのみ実行されますか?

4

2 に答える 2

0

質問は少し不明確ですが、group byステートメントを探していると思います。

select 
case when r.type = 'A' then @payment+sum(r.amount) end  as total_amount,
case when r.type = 'B' then @refund+sum(r.amount) end as total_amount(sum)
FROM payments r
GROUP BY r.type

テーブル内の個別の r.type 値ごとに、select ステートメントの集計日を含む結果行があります。

また、別の提案:

select 
(case r.type when 'A' then @payment else @refund end)+sum(r.amount) as total_amount
FROM payments r
GROUP BY r.type
于 2013-03-15T06:20:09.423 に答える
0

タイプが固定されている場合は、次のようなクエリが必要だと考えてください。

SELECT
  id,
  'A' as type,
  SUM(CASE WHEN type='A' THEN amount END) sum_typeA,
  'B' as type1,
  SUM(CASE WHEN type='B' THEN amount END) sum_typeB
FROM
  Payments
GROUP BY
  id

ここでフィドルを参照してください。

于 2013-03-15T07:31:07.923 に答える