Sql server 列值为真或1时如何计数
我有这个数据库 后来,我在PlayerMatch表(times(当事情发生时)、YellowCard、RedCard)中添加了更多的列 在将这些列添加到数据库之前,此选择的工作方式和计数结果如下所示: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
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(事件将是另一个用于进球、黄牌、红牌、替补等的表)。这样你就可以追踪所有的统计数据。对于一个球员来说,进球并不是一个真/假值。