比如说 在一个表格内(如图) 用sql语言写出 有哪些顾客定了至少两个房间?
SQL正规查询语句是这么写的:
SELECT COUNT(*) from 要查询的表名 WHERE 列名=条件 GROUP BY 筛选的列名;
在VB,C或者其他语言中调用SQL语句格式都是这样,但在VBA中就不一样,因为他规定了查询的类型,你要先做一个选择查询才能给他汇总,在汇总中不可以出现条件筛选,不然会弹出标准表达式中数据类型不匹配。COUNT()函数无法生效。在ACCESS中你要先建立一个选择查询,筛选匹配的字段,再把查询视图去汇总。
选择查询语句这么写:
SELECT * FROM 要查询的表名 WHERE 要筛选的列名=匹配的条件;
把他直接保存成视图,名称为查询1
再把查询1去汇总:
SELECT COUNT(*) FROM 查询1 GROUP BY 列名;
这是查询设计器的规则,在VBA代码中你可以这么写:
SELECT COUNT(*)FROM [SELECT * FROM 子表 WHERE 条件] AS 查询1 GROUP BY 字段名;追问
SELECT COUNT(*) from 要查询的表名 WHERE 列名=条件 GROUP BY 筛选的列名;
在VB,C或者其他语言中调用SQL语句格式都是这样,但在VBA中就不一样,因为他规定了查询的类型,你要先做一个选择查询才能给他汇总,在汇总中不可以出现条件筛选,不然会弹出标准表达式中数据类型不匹配。COUNT()函数无法生效。在ACCESS中你要先建立一个选择查询,筛选匹配的字段,再把查询视图去汇总。
选择查询语句这么写:
SELECT * FROM 要查询的表名 WHERE 要筛选的列名=匹配的条件;
把他直接保存成视图,名称为查询1
再把查询1去汇总:
SELECT COUNT(*) FROM 查询1 GROUP BY 列名;
这是查询设计器的规则,在VBA代码中你可以这么写:
SELECT COUNT(*)FROM [SELECT * FROM 子表 WHERE 条件] AS 查询1 GROUP BY 字段名;追问
如果求的改成“哪个顾客定的房间数是最多的?” 应该怎么写?
追答那就用比较函数啊 MAX(列名) ,刚才那是计数,汇总就是SUM() 等等,你查下,
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-04-22
select 顾客编号 from 表 group by 顾客编号 having count(*)>1追问
如果求的是“哪个顾客定的房间数是最多的?” 应该怎么写?
追答试试这个看行不
select max(count(*)),顾客编号 from 表 where 顾客编号 int( select 顾客编号 from 表 group by 顾客编号 having count(*) >1)
第2个回答 2012-04-22
大概语法 select gkbh,count(fj) from dfjl group gkbh having count(fj)>1追问
如果求的改成“哪个顾客定的房间数是最多的?” 应该怎么写?