1.利用行集函数sum和grop by语句可以实现数据的分类汇总,如统计在一段时间内不同商品的销售量,sql语句如下:
select 商品名, count(*) as 记录数,sum(zongjia) as 总价 from xiaoshou group by 商品名
2.access中的时间模糊查询:
在access中时间的模糊查询不能使用%在它里面用的是*
select name,sum(zongjia) from xiaoshou where time like '2009-6-27*' group by name
3.有时候access数据库中日期的记录是这样的:2009-6-27 23:59:59,但是我们需要查询出某一天的记录,这个时候使用
select name,sum(zongjia) from xiaoshou where time like '2009-6-27*' group by name是没有办法查处的,对于这个问题可以使用between..and..来搞定,语句如下:
select name,sum(zongjia) from xiaoshou where time between #2009-6-27# and #2009-6-27 23:59:59# group by name
4.将access的两个字段合并为一个字段:当两个字段都是数字类型且需要相加的时候可以这样:
SELECT danjia+shuliang as a
FROM xiaoshou //这时候a=danjia和shuliang之和
当一个字段为数字一个为文本时:
SELECT name&shuliang as a
FROM xiaoshou //a为name和shuliang的字符串相加
5.去掉access表中的重复行:
有时候需要将表的某个字段设置为主键,但是有重复值,数据量少的时候还可以人工查找,但是当数据比较大的时候再用人工去找,肯能就。。。。。这个时候我们可以通过SQL语句来这样实现,
select distinct * into 表2 from 表1 ;执行后系统会自动生成一个新表,即表2,而这个表2就是我们需要的结果。
6.按月份汇总数据:
利用Month()函数来实现按月份汇总数据
SELECT Month(time) AS 月份, sum(shou_ru) AS 借, sum(zhi_chu) AS 贷
FROM zhuo_pu
WHERE time Between #1/1/2010# And #12/31/2010#
GROUP BY Month(time);
7.access不支持SqlServer的case when,是通过iif函数实现的:
SELECT IIf(channel_type=0,'文章',iif(channel_type=1,'图片','视频')) AS 表达式1
FROM channel;
这里channel_type是一个int类型字段,通过iif函数将0、1、2所代表的作用转换为汉字