来自MS Access的JSP结果集 - 如何获取位置名称?

时间:2009-07-18 21:34:41

标签: sql ms-access

我在ms访问中有一个名为“form”的表,其中包含以下字段: formno,location,status。

我想创建一个计算:

的报告
  1. 每个位置的表格(列)总数
  2. 每个位置的状态=“待定”的表格(列)总数。
  3. 我尝试使用此查询执行此操作:

    select count(formno) as totalforms
    from form
    group by location;
    
    select count(formno) as pendingforms
    from form
    group by location
    WHERE status = 'pending';
    

3 个答案:

答案 0 :(得分:0)

SELECT Location, COUNT(FormNo) AS TotalForms, 
SUM(IIF(status = "pending", 1, 0)) AS Pending
FROM FORM GROUP BY Location

这有帮助吗?

答案 1 :(得分:0)

第二个SQL Statment将Where子句放在错误的位置。它应该看起来像其中之一:

SELECT Count(form.formno) AS CountOfformno, form.location
FROM form
GROUP BY form.location, form.status
HAVING (((form.status)='pending'));

SELECT Count(form.formno) AS CountOfformno, form.location
FROM form
WHERE (((form.status)='pending'))
GROUP BY form.location;

基本上,如果您希望按列分组并在其上设置标准,请使用Having Clause。 Where子句在group by子句之前。

要了解SQL语法,您可能会更容易使用“按设计网格查询”(在设计视图中),然后在数据表视图中获得结果后切换到SQL视图。

答案 2 :(得分:0)

表格是保留字,必须用方括号括起来:http://support.microsoft.com/kb/286335。我建议重命名表,因为它会继续引起问题。

select location,count(formno) as totalforms
from [form]
group by location

select location, count(formno) as pendingforms
from [form]
WHERE status = 'pending'
group by location

请注意,如果您希望在表格中包含所有记录,也可以使用count(*):In SQL is there a difference between count(*) and count(<fieldname>)