SQL请求中的SUM和SUM在同一个表中

时间:2012-10-06 13:55:10

标签: sql

这是一个常见的SQL问题,但我使用的是Firebird。

我有这张桌子(简化):

id  amount  type  idtype
--------------------
1    10      in1   0
2    15      in2   0
3    5       out1  1
4    4       out2  1
5    5       out3  2

idtype列“显示”传入部分的ID并添加:我不能在我的问题表单中使用“类型”列,因为每次都会导致类型不同。 传入的idtype为'0',表示'传入部分'

所以,我想得到结果:

id   in      out  
--------------------
1    10      9    
2    15      5

我试过这样的方式:

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

但这不起作用。 有什么建议吗?

1 个答案:

答案 0 :(得分: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