3

我正在使用 Microsoft Access 2007。我有两个 SELECT COUNT(*) 语句在不合并的情况下运行良好,但我想通过 VBA 将这些语句组合起来用作表单记录源。

1. SELECT Count(*) AS OrderCount FROM (SELECT DISTINCT OrderNo FROM tblDisposition);"

2. SELECT Count(*) AS ReviewCount FROM tblDisposition WHERE [ReviewClose]=0;

我知道已经有很多这样的问题,例如:

两个 SQL COUNT() 查询?

访问 2007:“选择计数(DISCTINCT ...”

如何将 2 个 select 语句合并为一个?

还有很多。这是我尝试过但仍然失败的方法:

SELECT (SELECT Count(*) AS OrderCount FROM (SELECT DISTINCT OrderNo FROM tblDisposition)),"
        (SELECT Count(*) AS ReviewCount FROM tblDisposition WHERE [ReviewClose]=0);"

我将 myForm 上的组合 SQL 语句设置为记录源,并且我有两个文本字段,我将控制源设置为 OrderCount 和 ReviewCount。在我设置 recorsource 的表单加载事件中,两个文本字段都给出 #NAME 错误,但如果我只设置一个 SQL 语句,它将在文本字段上显示正确的计数。

4

2 回答 2

3

您可以使用以下 SQL 语句将这两个计数作为单行中的两个值来获取:

SELECT 
    (
        SELECT Count(*) AS OrderCount 
        FROM 
            (
                SELECT DISTINCT OrderNo FROM tblDisposition
            )
    ) AS OrderCount,
    (
        SELECT Count(*) AS ReviewCount 
        FROM tblDisposition 
        WHERE [ReviewClose]=0
    ) AS ReviewCount
FROM
    (
        SELECT COUNT(*) FROM tblDisposition
    )

请注意,finalFROM子句实际上只是让查询返回单行的一种方式。这也可以通过此处Dual描述的表格来完成。

于 2013-06-06T10:29:01.123 回答
1

我想你的查询根本不起作用。尝试像这样添加'* FROM':

SELECT * FROM 
(SELECT Count(*) AS OrderCount FROM (SELECT DISTINCT OrderNo FROM tblDisposition)),
(SELECT Count(*) AS ReviewCount FROM tblDisposition WHERE [ReviewClose]=0)
于 2013-06-05T10:12:39.033 回答