MS Access查询计数实例

时间:2014-08-19 21:01:36

标签: ms-access-2010


我有一个包含以下值的示例表

SNO  |  Mon
-----+-------
100  |  1
101  |  1
102  |  1
100  |  2
101  |  2
102  |  2
100  |  3
101  |  3 

现在我需要一个查询来统计3个月内的总数

结果应为2,为100& 101在mon 1,2和3中。但是,102仅出现在mon 1,2。

谢谢, RK

1 个答案:

答案 0 :(得分:0)

理论上的查询应该有效。

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 

我使用了两个SubQueries来获得结果。两者都用在SQL的HAVING子句中。第一个SqubQuery(最内层)。将获得表中可用的唯一月份数,外部SubQuery将计算唯一月份的数量。因此,整体查询可以翻译为"SELECT the serial number FROM the table HAVING the Count of Month equal to the Number of unique records in the same table"

我使用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))
);