Sql server 列值为真或1时如何计数

Sql server 列值为真或1时如何计数,sql-server,select,count,Sql Server,Select,Count,我有这个数据库 后来,我在PlayerMatch表(times(当事情发生时)、YellowCard、RedCard)中添加了更多的列 在将这些列添加到数据库之前,此选择的工作方式和计数结果如下所示: SELECT A.MatchDate, B1.Name AS HOMETEAM, C1.Goal AS GOAL_HOME, C2.Goal AS GOAL_AWAY, B2.Name AS AWAYTEAM FROM Match A INNER JOIN Team AS B1 ON A.Ho

我有这个数据库

后来,我在PlayerMatch表(times(当事情发生时)、YellowCard、RedCard)中添加了更多的列

在将这些列添加到数据库之前,此选择的工作方式和计数结果如下所示:

SELECT A.MatchDate, B1.Name AS HOMETEAM, C1.Goal AS GOAL_HOME, C2.Goal AS GOAL_AWAY, B2.Name AS AWAYTEAM
 FROM Match A
 INNER JOIN Team AS B1 ON A.HomeTeamId = B1.TeamId
 INNER JOIN Team AS B2 ON A.AwayTeamId = B2.TeamId
 LEFT JOIN (SELECT MatchId, TeamId, COUNT(Goal) AS Goal
            FROM PlayerMatch 
            INNER JOIN Players ON Players.PlayerId = PlayerMatch.PlayerId
            GROUP BY MatchId, TeamId) C1 ON A.MatchId = C1.MatchId AND A.HomeTeamId =C1.TeamId
 LEFT JOIN (SELECT MatchId, TeamId, COUNT(Goal) AS Goal
            FROM PlayerMatch 
            INNER JOIN Players ON Players.PlayerId = PlayerMatch.PlayerId
            GROUP BY MatchId, TeamId) C2 ON A.MatchId = C2.MatchId AND A.AwayTeamId =C2.TeamId
所以在我得到这样的输出之前:
01.01.2001。拜仁2巴塞罗那


现在,此选择无法正常工作。它甚至在Goal=NULL时也会计算目标数,所以我得到了错误的结果。如何更正此问题?

您可以使用“SUM(如果目标不为空,则为1,否则为0结束)”作为目标。为什么目标为真/假?你如何处理一场比赛中的多个进球?老实说,我认为你需要让这一切正常化。我希望至少有一张桌子可以容纳MatchEvents。此表将包含PlayerID、MatchID和EventID(事件将是另一个用于进球、黄牌、红牌、替补等的表)。这样你就可以追踪所有的统计数据。对于一个球员来说,进球并不是一个真/假值。