【问题标题】:Counting Occurrences in MS Access计数 MS Access 中的出现次数
【发布时间】:2015-08-07 19:52:44
【问题描述】:

我正在尝试返回与 OCCUPANTINVESTIGATOR 关联的所有房间的列表。我还想只包括与超过 1 个房间相关联的人。

我尝试了以下查询

SELECT [OCCUPANT], [INVESTIGATOR], [ROOM NUMBER], [ROOM SUBUSE], COUNT([OCCUPANT]), COUNT([INVESTIGATOR])
    FROM [FACILITIES MANAGEMENT SCHEDULE]
        GROUP BY [OCCUPANT], [INVESTIGATOR], [ROOM NUMBER], [ROOM SUBUSE]
            HAVING (COUNT([OCCUPANT]) > 1 OR COUNT([INVESTIGATOR]) > 1);

返回类似的结果

但是对于像这样的数据

这似乎不包括蔡微博或他入住7148-*房间。显然这是因为他在那个空间中存在的计数不大于 1,但是有没有办法重新格式化我的查询以获得我想要的数据?

谢谢, 水獭

【问题讨论】:

    标签: sql ms-access count ms-access-2010


    【解决方案1】:

    GROUP BYHAVING 是正确的想法,但您只需按房间 信息进行分组。然后使用HAVING 过滤您想要的内容:

    SELECT [ROOM NUMBER], COUNT([OCCUPANT]), COUNT([INVESTIGATOR])
    FROM [FACILITIES MANAGEMENT SCHEDULE]
    GROUP BY [ROOM NUMBER]
    HAVING (COUNT([OCCUPANT]) > 1 OR COUNT([INVESTIGATOR]) > 1);
    

    我不知道[ROOM SUBUSE] 是否有任何兴趣。这还假定在不使用字段时 OCCUPANTINVESTIGATOR 具有 NULL 值(而不是某种空白)。

    【讨论】:

    • 这似乎返回了一个更正确的列表。我可以在 group by 声明中包含 Occupant/Investigator name 和 Subuse 而不包含它们吗?
    • @Otterman 。 . .不。你可以输入MAX(Occupant) 之类的东西,你想要一个不那么任意的值。
    【解决方案2】:

    您可以使用 2 where exists 填充正确的数据集,如下所示:

    `SELECT [OCCUPANT], [INVESTIGATOR], [ROOM NUMBER], [ROOM SUBUSE], COUNT([OCCUPANT]), COUNT([INVESTIGATOR])
    FROM [FACILITIES MANAGEMENT SCHEDULE] Out
    WHERE Exists (
                  SELECT 'O' 
                  FROM [FACILITIES MANAGEMENT SCHEDULE] ino 
                  WHERE out.occupant=ino.occupant 
                  GROUP BY inn.occupant 
                  HAVING count(ino.occupant) >1)
    or exists (
               SELECT 'I' 
               FROM [FACILITIES MANAGEMENT SCHEDULE] ini 
               WHERE out.investigator=ini.investigator 
               GROUP BY ini.investigator
               HAVING count(ini.investigator) >1)
    GROUP BY [OCCUPANT], [INVESTIGATOR], [ROOM NUMBER], [ROOM SUBUSE];`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      相关资源
      最近更新 更多