这是一个常见的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
但这不起作用。 有什么建议吗?
答案 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