2013-06-05 67 views
3

我正在使用Microsoft Access 2007.我有两个SELECT COUNT(*)语句,它们在没有合并的情况下正常运行,但我想将这些语句合并为一个通过VBA作为表单记录源。结合了两个SQL SELECT COUNT(*)语句

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

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

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

two SQL COUNT() queries?

Access 2007: "SELECT COUNT(DISCTINCT ..."

How do I combine 2 select statements into one?

等等。这是我做过尝试,但还是失败了:

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

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

+0

错误是什么? –

+0

@AmitSingh我在myForm上设置了组合的SQL语句。我有两个textfields,我把controlsource设置为OrderCount和ReviewCount。运行时,两个文本字段都会给出#NAME错误。但如果我只设置一个SQL语句,它将在文本字段上显示正确的计数。 –

+0

提供了列别名,并尝试使用 –

回答

3

可以使用下面的SQL语句得到这两方面作为一个单列的两个值一种让查询返回单行的方法。这也可以用Dual表完成,如here所述。

1

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

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 
    ) 

注意,最终FROM条款实际上就是:

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

,现在我得到'运行时错误3074:不能重复表名'%FROM在FROM子句中输入'Alias' –

+0

您使用的是Waht别名? http://office.microsoft.com/en-us/access-help/HV080760180.aspx尝试添加不同的。 – Mikhail