我正在为MS Access数据库编写一个SQL语句,目的是计算3个不同查询的值,所以我尝试了这种方式:
SELECT(query1 + query2 + query3) AS Qtd
每个查询都从聚合函数计数中返回一个唯一值,即query1 = SELECT Count(something) FROM Table WHERE...
一切都应该正常,但MS Access需要一个FROM
子句。当我在该查询中放置一个表格(而不是更改上面的SELECT
语句)时,我最终会得到行的音调,而每行都是Qtd
列所期望的结果。
那么有没有办法跳过FROM
条款或唯一的解决方法是写TOP 1
(或DISTINCT
),因为没有必要,所以不能获得重复行的音调FROM
子句中的表?
答案 0 :(得分:3)
您可以union all
查询,然后sum
所有结果:
SELECT SUM(cnt)
FROM (SELECT COUNT(*) AS cnt FROM table1 WHERE ...
UNION ALL
SELECT COUNT(*) AS cnt FROM table2 WHERE ...
-- Etc..
) t
答案 1 :(得分:2)
考虑聚合查询的交叉连接(逗号分隔表):
SELECT (query1.CntColumn + query2.CntColumn + query3.CntColumn) AS Qtd
FROM query1, query2, query3