Ms access 2010 MS Access查询计数实例

Ms access 2010 MS Access查询计数实例,ms-access-2010,Ms Access 2010,我有一个具有以下值的示例表 SNO | Mon -----+------- 100 | 1 101 | 1 102 | 1 100 | 2 101 | 2 102 | 2 100 | 3 101 | 3 现在我需要一个查询来计算3个月内的sno总数 结果应该是2,因为100和101在mon 1、2和3中。然而,102只存在于mon 1,2中 谢谢, RK理论上,这个查询应该是可行的 SELECT tmpTbl.sNo FROM tmpT

我有一个具有以下值的示例表

SNO  |  Mon
-----+-------
100  |  1
101  |  1
102  |  1
100  |  2
101  |  2
102  |  2
100  |  3
101  |  3 
现在我需要一个查询来计算3个月内的sno总数

结果应该是2,因为100和101在mon 1、2和3中。然而,102只存在于mon 1,2中

谢谢,
RK

理论上,这个查询应该是可行的

SELECT 
    tmpTbl.sNo
FROM 
    tmpTbl
GROUP BY 
    tmpTbl.sNo
HAVING 
    Count(tmpTbl.monNo) = (SELECT Count(*) FROM (SELECT tmpTbl.monNo FROM tmpTbl GROUP BY tmpTbl.monNo));
结果是,

sNo 
----
100 
101 
我使用了两个子查询来获得结果。它们都用在SQL的HAVING子句中。第一个SqubQuery是最内部的。将获取表中可用的唯一月份数,外部子查询将计算唯一月份数。因此,整个查询可以转换为从表中选择序列号,该表的月数等于同一表中的唯一记录数

我之所以使用SbQuery而不是数字,是因为当您的月数增加时,这也将适用。希望这有帮助

编辑 下面是获取计数的查询

SELECT 
    Count(*) As simpleCount 
FROM 
(
    SELECT 
        tmpTbl.sNo
    FROM 
        tmpTbl
    GROUP BY 
        tmpTbl.sNo
    HAVING 
        Count(tmpTbl.monNo) = (SELECT Count(*) FROM (SELECT tmpTbl.monNo FROM tmpTbl GROUP BY tmpTbl.monNo))
);

谢谢,但是这个查询只提供所有月份的记录。我需要的是1个月、2个月等时间内存在的sno计数,而不是表中的mon。我理解,考虑到该查询,您可以轻松获得计数。无论如何,我已经编辑了代码,请查看我上面帖子中的编辑部分。