我正在尝试执行查询以返回只有1个交叉引用号的订单。
这样的事情(字段名称和表格改为保护无辜者;-P):
SELECT ordernum FROM orders WHERE (COUNT(orderref) = 1) ORDER BY ordernum;
问题是,在使用Access的WHERE子句中无法使用聚合函数(不确定它是否在普通SQL中允许)。
如何使用Access SQL实现此目的?
答案 0 :(得分:5)
计数(*)必须在HAVING子句中,因为它是计算的。此外,您缺少GROUP BY子句。
-- Updated statement
SELECT ordernum, COUNT(orderref) as Total
FROM orders
GROUP BY ordernum
HAVING COUNT(orderref) = 1
ORDER BY ordernum
有人通过电子邮件告诉我,MS Access不支持HAVING子句。这对我来说是新闻。很久以前我获得了MOS ACCESS认证。
让我们使用Northwind数据库进行MS Access 2007.我更改了语法,因为列名不同。但结果是一样的。
答案 1 :(得分:3)
我不确定它是否在Access中工作但尝试类似这样的
SELECT ordernum FROM orders group by orderref having count(*) = 1 ORDER BY ordernum;
答案 2 :(得分:0)
尝试使用SQL查询:
SELECT ordernum,count(ordernum) as countorders FROM orders
GROUP BY ordernum
HAVING countorders = 1
ORDER BY ordernum;
答案 3 :(得分:0)
试试这个,
SELECT ordernum, count(orderref)
FROM orders
ORDER BY ordernum, having count(orderref)=1;