我想添加两个查询的总和(请参阅下面的查询,这些示例有效)。我的问题是当其中一个查询返回一个null结果,如
select (select sum(60+3+25+2))+(select sum(0)) as montant
添加的结果自动为NULL 但是当2个查询的结果大于null时,如:
select (select sum(60+3+25+2))+(select sum(300+50)) as montant
添加有效,我得到了正确的结果:
这是第一个给我90作为结果的查询
select sum(lf.quantite) from fraisforfait f
inner join lignefraisforfait lf on lf.idFraisForfait = f.id
inner join fichefrais ff on ff.idVisiteur = lf.idVisiteur and ff.mois = lf.mois
where lf.idVisiteur = "a131" and lf.mois = "201312"
这是第二个给我0的结果
select sum(lfh.montant)
from lignefraishorsforfait lfh
inner join fichefrais ff on ff.idVisiteur = lfh.idVisiteur and ff.mois = lfh.mois
where ff.idVisiteur = "a131" and ff.mois = "201312"
这里添加了2个查询,这些查询给出了一个NULL结果,但我希望90:
select (select sum(lf.quantite) from fraisforfait f
inner join lignefraisforfait lf on lf.idFraisForfait = f.id
inner join fichefrais ff on ff.idVisiteur = lf.idVisiteur and ff.mois = lf.mois
where lf.idVisiteur = "a131" and lf.mois = "201401") + (select sum(lfh.montant)
from lignefraishorsforfait lfh
inner join fichefrais ff on ff.idVisiteur = lfh.idVisiteur and ff.mois = lfh.mois
where ff.idVisiteur = "a131" and ff.mois = "201401") as montantValide;
有没有人能解决这个问题?谢谢你的时间。
答案 0 :(得分:0)
您需要添加能够将NULL
转换为0
的内容。
select COALESCE(sum(lfh.montant), 0)
答案 1 :(得分:0)
你想要这样的东西。
T-SQL
select (select 1 value) + isnull((select null value),0);
MySQL的
select (select 1 value) + ifnull((select null value),0);
答案 2 :(得分:0)
你可以像这样写
select isnull((select isnull(sum(60+3+25+2),0))+(select isnull(sum(0),0)),0)
as montant
答案 3 :(得分:0)
你可以在sum函数中使用 ISNULL 函数,就像这样
select Sum(ISNULL(value,0)) as result
所以如果值为null,则返回secend参数,sum函数将返回正确的结果