导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

sql汇总代码!

wzq855507 2007-12-29 03:37:31
第一段代码
SELECT 专业,(SELECT COUNT(1) AS COUNT FROM (select 违章人,专业 from AZYZL1 group by 违章人,专业) c WHERE 专业 = wzrbb1.专业) as 在册人数,SUM(CASE WHEN 计分 <= 59 THEN 1 ELSE 0 END)+(select count(1) from azyzl1 bbb where not exists(select 1 from wzrbb where 专业 = bbb.专业 and 违章人 = bbb.违章人)and 专业 = wzrbb1.专业) AS 绿区人数,SUM(CASE WHEN 60 < 计分 AND 计分 <= 79 THEN 1 ELSE 0 END) AS 蓝区人数, SUM(CASE WHEN 80 <= 计分 AND 计分 < 99 THEN 1 ELSE 0 END) AS 黄区人数,SUM(CASE WHEN 计分 >= 100 THEN 1 ELSE 0 END) AS 橙区人数 into tempresult FROM (SELECT 专业, 违章人, 计分 = SUM(计分) FROM wzrbb GROUP BY 专业, 违章人) AS wzrbb1 GROUP BY 专业

第二段代码

select isnull(专业,'合计') as 专业 ,sum(在册人数) as 在册人数,sum(绿区人数) as 绿区人数,sum(蓝区人数) as 蓝区人数,sum(黄区人数) as 黄区人数,sum(橙区人数) as 橙区人数 ,专业安全度 = max(CASE WHEN 在册人数 = 0 THEN '橙区' WHEN 绿区人数 * 1.0 / 在册人数 > 0.95 THEN '绿区' WHEN 绿区人数 * 1.0 / 在册人数 BETWEEN 0.95 AND 0.9 THEN '蓝区' WHEN 绿区人数 * 1.0 / 在册人数 BETWEEN 0.85 AND 0.9 THEN '黄区' WHEN 绿区人数 * 1.0 / 在册人数< 0.85 THEN '橙区' END) FROM tempresult group by 专业 with rollup order by case when 专业 = '合计' then 1 else 0 end asc
第三段代码
drop table tempresult
这三段代码把数据库中的表专业实现了汇总和合计,现在还有一个问题就是当WZRBB表中如果 “违章类型”这一列中内容包含‘重伤事故’那所在这一行对应的专业变为蓝区。这段代码怎么加?

...全文
103 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pt1314917 2007-12-29
呵呵。这代码也太长了
建议楼主把数据和想要的结果贴出来,还好理解一点。。。
回复
wzq855507 2007-12-29
没人回真晕
回复
wzq855507 2007-12-29
wzrbb 表中的字段分别为,安质员姓名,所在区队,时间,班次,工作地点,隐患内容,罚款,违章人,专业,违章类型,违章内容,计分,考核人,类型
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告