请教一个sql语句(100)

  • 主题发起人 主题发起人 seafox
  • 开始时间 开始时间
S

seafox

Unregistered / Unconfirmed
GUEST, unregistred user!
name riqi kstime jstime lbaaa 2010-3-31 17:08:40 45级 2010-3-31 17:09:44 aaa 2010-3-31 17:12:22 30级ccc 2010-3-31 17:12:31 40级aaa 2010-4-1 20:25:01 40级aaa 2010-4-1 20:25:41 40级bbb 2010-4-2 8:45:15 30级如何实现按name进行统计每个人完成数量 结果如下name 30级 40级 45级 aaa 1 2 0bbb 1 0 0ccc 0 1 0
 
如下这样:select name,sum([30级]) [30级],sum([40级]) [40级],sum([45级]) [45级] from ( select name, Case when lb='30级' then num else 0 end as '30级', Case when lb='40级' then num else 0 end as '40级', Case when lb='45级' then num else 0 end as '45级' from (select count(*)num,name,lb from TableName)Tmb_1)Tmp_2 group by nam级数可以设置为动态的参数,具体你要自己稍作调整
 
Tmb_1)Tmp_2 是什么,我用的是access 数据库,数据库名renwu
 
是临时表!看样子你的SQL语法还没有过关呀![:D]
 
不能不用临时表实现吗,只用一条语句
 
二楼的怎么这么麻烦?select name, max(Case when lb='30级' then num else 0 end) as '30级', max(Case when lb='40级' then num else 0 end) as '40级', max(Case when lb='45级' then num else 0 end) as '45级'from (select count(lb) as num,name,lb from TableName group by name lb) agroup by name完成!没有经过验证,只要先查出数据,再把行列转换一下就行了。
 
簡單的行列轉換,網上搜索一下,一大堆的。
 
to 舞雪语句在access中不能通过,请教怎么更改一下
 
在sql2000中通过
 
好象access中没有case语句吧,似乎要用iif吧.
 
多人接受答案了。
 
后退
顶部