我有一个包含以下值的示例表
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
答案 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))
);