我正在为英超联赛创造积分榜。我需要为主场和客场记录做好榜。其中一个团队没有家庭损失,因此SQL将其计为NULL而不是0.我想用0替换NULL。我无法获得所需的结果。
select ht.Team,
CASE when FTR IS NULL then 0
else count(ht.FTR)
END as LossesHome
Into dbo.HomeLoss
from dbo.HomeTeam ht
where FTR = 'A'
group by ht.Team, ht.FTR
我认为这会给我带来理想的结果,但是,它只返回19支球队(有20支球队)。 我已经阅读了其他使用coalesce和isnull函数的问题并尝试了它们但我仍然只有19个团队返回。
任何帮助将不胜感激。如果有人需要更多信息或代码,请告诉我。
再次感谢。
答案 0 :(得分:2)
看起来问题出在你的WHERE子句中,你没有包含FTR空值。
select ht.Team,
CASE when FTR IS NULL then 0
else count(ht.FTR)
END as LossesHome
Into dbo.HomeLoss
from dbo.HomeTeam ht
where FTR = 'A' or FTR is null
group by ht.Team
答案 1 :(得分:0)
SELECT ISNULL(myColumn, 0 ) FROM myTable
答案 2 :(得分:0)
你可以使用合并功能: -
select ht.Team,
coalesce(count(ht.FTR) as count_LossesHome,0)
Into dbo.HomeLoss
from dbo.HomeTeam ht
where FTR = 'A'
group by ht.Team