全部。我的表看起来像
Team1 Team2 result
a b win
a c tie
b d loss
c a win
d c win
我想输出team1结果统计信息,如
Team1 win loss tie
a 4 2 1
b 2 2 3
我可以使用
计算胜诉案例SELECT TEAM1,Count(Result='win') as Win_Number
From GAMES
Where Result='win'
Group by TEAM1
但是我应该添加什么输出损失和平局?使用join?
更新:使用" iif sum"命令解决问题,请参阅XQbert的帖子。非常感谢。
答案 0 :(得分:1)
这是一种方式......
我一直忘记案例在MSAccess中的内联选择中不起作用
所以这不起作用:
SELECT [Home team],
sum(CASE WHEN result='win' THEN 1 else 0 END) as Win,
sum(CASE WHEN result='loss' THEN 1 else 0 END) as Loss,
sum(CASE WHEN result='tie' THEN 1 else 0 END) as Tie
FROM GAMES
GROUP BY [Home team]
但这可能:
SELECT [Home team]
sum(iif(result='win', 1,0)) as Win,
sum(iif(result='loss', 1,0)) as Loss,
sum(iif(result='tie', 1,0)) as Tie,
FROM GAMES
GROUP BY [Home team]
这基本上表示评估由主队分组的表中的每个结果,如果结果是胜利,失败或平局,则将值设置为1,否则将值设置为0.然后,将给出给定主页的所有结果的SUM球队。因为每个结果要么是赢或输,所以1会出现在胜利,失败或平局中,但只有三个中的一个;如果结果不是胜利损失或平局,可能没有。虽然我支持我使用下面的交叉表查询声明。
所以数据看起来像......总和之前
Team1 win loss tie
a 1 0 0
a 1 0 0
a 1 0 0
a 1 0 0
a 0 1 0
a 0 1 0
a 0 0 1
b 1 0 0
b 1 0 0
b 0 1 0
b 0 1 0
b 0 0 1
b 0 0 1
b 0 0 1
然后总和会给你......
Team1 win loss tie
a 4 2 1
b 2 2 3
Access有一个很好的功能,称为交叉表查询。将查询类型更改为此并使用它。这是一个很好的功能,访问有许多大型数据库没有! IT允许您根据行的值(在您的情况下为结果)创建列,然后通过它进行聚合(计算给定团队的赢/输关系出现的次数)
如何: http://office.microsoft.com/en-us/access-help/create-a-select-or-crosstab-query-mdb-HP005187965.aspx