如何为每个重复值增加一个计数器?

时间:2014-04-19 12:59:47

标签: sql database ms-access

作为我在大学课程的一部分,我必须在Microsoft Access中创建一个数据库,这在某种程度上限制了我正在尝试做的事情。我有一个表格,其中包含一个团队中的玩家是否出现在夹具中的信息,使用的值是“P”,“R”和“M”(Played,Reserves,Missed)。我想为P或R的每个值创建一个值为1的查询,为M创建一个单独的值,这样当我制作打印出会员卡的报表时,它会显示他们玩过的灯具数量in和他们错过的灯具数量。

对不起,如果不清楚的话,如果你问的话,我会尝试进一步解释,但我对这些东西不是很了解。谢谢。

编辑:我会使用屏幕截图链接,如果没关系,这里是Fixture Attendance实体,显示团队成员是否参加了游戏。我正在制作一张基于this one的会员卡。我希望能够根据上述实体中的值显示会员所扮演的灯具数量和错过的灯具数量,并以我即将创建的形式使用该信息。这将是我的会员卡表格中的子表格。

我可能很难解释这一点 - 我理解Access在现实世界中很少使用,所以我不知道为什么我这样做是首先并且不觉得我得到任何使用数据库的真正知识。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我猜你想要这样的东西:

select playerid, sum(iif(fixture in ("P", "R"), 1, 0)) as NumPR,
       sum(iif(figure = "M", 1, 0)as NumM
from table t
group by playerid;

这里的关键想法是将条件部分(iif())放在sum()内。

答案 2 :(得分:0)

CASE WHEN可用于将代码翻译为1&0和7。然后使用SUMGROUP BY进行求和。

SELECT player_id, SUM(Played), SUM(Reserve), SUM(Missed)
FROM
(SELECT player_id,
  CASE WHEN present = 'P' THEN 1 ELSE 0 AS Played,
  CASE WHEN present = 'R' THEN 1 ELSE 0 AS Reserve,
  CASE WHEN present = 'M' THEN 1 ELSE 0 AS Missed
FROM fixtures)
GROUP BY player_id;