1

これは一般的な SQL の質問ですが、私は Firebird を使用しています。

私はこの表を持っています(簡略化):

id 金額タイプ idtype
--------------------
1 10 インチ 1 0
2 15平方インチ 0
3 5 アウト1 1
4 4 アウト 2 1
5 5 out3 2

idtype 列は、受信パーツの ID を「表示」し、追加します。質問フォームで「type」列を使用することはできません。タイプが毎回異なるためです。着信の idtype には「0」があり、これは「着信部分」を意味します

だから、私は結果が欲しい:

IDインアウト  
--------------------
1 10 9    
2 15 5

私はこの方法で試しました:

選択する
  ID、
  額、
   (
    選択する
      SUM(金額)まとめて
    から
      マイテーブル
    どこ
      ID タイプ 0
    グループ化
      ID
   )「アウト」として
から
  マイテーブル
どこ
  ID タイプ = 0

しかし、これは機能しません。助言がありますか?

4

1 に答える 1

1

id条件の代わりにフィールドを使用しておりidtype、合計するレコードを何にも一致させていません。

select
  id,
  amount,
   (
    select
      SUM (amount) as together
    from
      mytable
    where
      idtype = t.id
   ) as "out"
from
  mytable t
where
  idtype = 0

ジョインとして書くこともできます:

select
  id,
  amount,
  sum(t2.amount) as "out"
from
  mytable t
  innerjoin mytable t2 on t2.idtype = t.id
group by
  t.id, t.amount
where
  idtype = 0
于 2012-10-06T13:59:41.117 に答える