打印本文 打印本文 关闭窗口 关闭窗口
ACCESS JET SQL 分段或者交叉统计的查询语句怎么写?
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3223  更新时间:2007/11/14 13:13:00  文章录入:mintao  责任编辑:mintao
bsp;0             1               0               0
王五   初一3班    数学     80            0             0               1               0
王五   初一3班    英语     50            1             0               0               0
周天   初一3班    数学    100            0             0               0               1
李小   初一2班    语文     99            0             0               0               1
李小   初一2班    物理    100            0             0               0               1

但是如果需要得到合计人数怎么办?直接用 SELECT ... GROUP BY  语句就可以做到

select 班级,科目,SUM(分数) as 总分,sum(不及格人次),sum(60到80分人次),sum(80到90分人次),sum(90到100分人次) from ([刚才的执行结果]) group by 班级,科目

即可,好了,我们将刚才的 SQL 语句替换进去可以得到

select 班级,科目,SUM(分数) as 总分,sum(不及格人次),sum(60到80分人次),sum(80到90分人次),sum(90到100分人次) from (select 姓名,班级,科目,分数,1 as 不及格人次,0 as 60到80分人次,0 as 80到90分人次,0 as 90到100分人次 from 表 where 分数< 60 union all
select 姓名,班级,科目,分数,0 as 不及格人次,1 as 60到80分人次,0 as 80到90分人次,0 as 90到100分人次 from 表 where 分数>=60 and 分数< 80 union all
select 姓名,班级,科目,分数,0 as 不及格人次,0 as 60到80分人次,1 as 80到90分人次,0 as 90到100分人次 from 表 where 分数>=80 and 分数< 90 union all
select 姓名,班级,科目,分数,0 as 不及格人次,0 as 60到80分人次,0 as 80到90分人次,1 as 90到100分人次 from 表 where 分数>=90 and 分数<=100 ) group by 班级,科目

 

 

 

 

问题:

  查询一个字段中值分别0-3,3-6,6-15,15-30,>30的记录的个数怎么做?

 

 

回答:

  非常简单,你要做的只是写不同的WHERE 子句,然后将他们组合起来而已。用 ASNI SQL 就可以做到。

 

 

select 呼叫 as 小于3,0 as 大于3小于6,0 as  大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长<3

union all

select 0 小于3,呼叫 as 大于3小于6,0 as  大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长>3 and 时长<6

union all ....


一直持续下去

如果你要汇总只要写一个 sum语句即可


select sum(小于3),sum(大于3小于6),sum(大于6小于15),sum(大于15小于30),sum( 大于30 ) from (

select 呼叫 as 小于3,0 as 大于3小于6,0 as  大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长<3

union all

select 0 小于3,呼叫 as 大于3小于6,0 as  大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长>3 and 时长<6

union all ....)


太复杂了吧,有没有简单点的,用IIF什么的?
回答上述问题:请注意!用 IIF 才是最复杂的,因为它涉及到 JET DB / ACCESS JET SQL /VBA 三方面!而用 UNION ALL 只涉及到 SQL,该语句通用性非常强

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口