计算值在SQL中的列中存在的次数,如果不存在,则为0';t基于两列

计算值在SQL中的列中存在的次数,如果不存在,则为0';t基于两列,sql,Sql,我试图计算一支球队在他们的会议锦标赛中获胜的次数。下面列出了我使用的部分SQL表: Season ConfAbbrev DayNum WTeamID LTeamID 1 2001 a_sun 121 1194 1144 2 2001 a_sun 121 1416 1240 3 2001 a_sun 122 1209 1194 4 2001 a_sun 122 1359 1239

我试图计算一支球队在他们的会议锦标赛中获胜的次数。下面列出了我使用的部分SQL表:

   Season ConfAbbrev DayNum WTeamID LTeamID
1   2001    a_sun     121   1194    1144
2   2001    a_sun     121   1416    1240
3   2001    a_sun     122   1209    1194
4   2001    a_sun     122   1359    1239
5   2001    a_sun     122   1391    1273
6   2001    a_sun     122   1407    1416
7   2001    a_sun     123   1209    1359
8   2001    a_sun     123   1407    1391
9   2001    a_sun     124   1209    1407
如果我运行以下查询:

SELECT season, confabbrev, wteamid, COUNT(wteamid) AS wins
INTO conf_tourney_wins
FROM mconferencetourneygames
GROUP BY season, confabbrev, wteamid
ORDER BY season, confabbrev;
我可以得到一个队的获胜次数。问题是,我还希望没有赢得比赛的球队在“胜利”列中以0列出。我想我需要用一个案例陈述,但还没能让它起作用。我试着使用类似于:

WHEN lteamid NOT IN wteamid THEN 0

但那没用。任何帮助都将不胜感激

您需要从所有团队的列表开始。让我假设你把这个放在桌子上。然后<代码>左连接。所以,这似乎是你想要的——包括所有
0
的球队,对于那些没有获胜的球队:

SELECT ctw.season, ctw.confabbrev, t.wteamid, COUNT(c.teamid) AS wins
INTO conf_tourney_wins
FROM teams t LEFT JOIN
     mconferencetourneygames ctg
     ON ctg.wteamid = t.teamid
GROUP BY  ctw.season, ctw.confabbrev, t.wteamid
ORDER BY season, confabbrev;

如果有团队表格,Gordon Linoff的答案是正确的。但是如果没有,你可以写:

select grp.season, grp.confabbrev, grp.TeamID,count(g.wteamID)
from
    (SELECT season, confabbrev, wteamid as teamID
     FROM mconferencetourneygames
     GROUP BY season, confabbrev, wteamid
     union
     SELECT season, confabbrev, Lteamid as TeamID
     FROM mconferencetourneygames
     GROUP BY season, confabbrev, Lteamid
    ) grp
left outer join mconferencetourneygames m
on(g.season = grp.season and g.confabbrev = grp.confabbrev and g.wteamid = 
grp.teamid)
GROUP BY grp.season, grp.confabbrev, grp.TeamID
ORDER BY grp.season, grp.confabbrev;

请使用适当的数据库平台来创建表格示例数据和所需结果非常有用。这非常有效。我确实有一个团队列表,这可能也很有效,但这很好,因为它选择了任一列中列出的所有团队。我确实删除了
distinct
调用,因为我想计算团队ID在wteamid列中的次数。谢谢你的帮助。