这是我真正的问题
如何减去具有相同ID的所有行?
这是我对subtact
的查询SELECT amount - (SELECT amount
FROM tblmonth WHERE id2='1'
AND type='budget')
FROM tblmonth
WHERE id2='1'
and type='actual'
此查询中的问题是,它只能使用id2 =' 1'一次减去一个。
请参阅下面的图片以供参考。谢谢
答案 0 :(得分:2)
我认为没有理由使用子查询。逻辑最好表达为:
select sum(case when type = 'budget' then amount
when type = 'actual' then -amount
else 0
end)
from tblmonth
where id = 1
答案 1 :(得分:1)
似乎你的id是PK,所以使用top 1来确保查询只返回一条记录。如果它应该返回多个,则可以使用SUM()函数
SELECT TOP 1 ( SELECT TOP 1 amount FROM tblmonth where type = 'budget' and id='1')
- ( SELECT TOP 1 amount FROM tblmonth where type = 'actual' and id='1')
as Result
from tblmonth
选择Top 1,因为你的结果只返回一条记录,确实需要返回那些结果的表tblmonth记录的数量。