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表中如果 “违章类型”这一列中内容包含‘重伤事故’那所在这一行对应的专业变为蓝区。这段代码怎么加?

...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pt1314917 2007-12-29
  • 打赏
  • 举报
回复
呵呵。这代码也太长了
建议楼主把数据和想要的结果贴出来,还好理解一点。。。
wzq855507 2007-12-29
  • 打赏
  • 举报
回复
没人回真晕
wzq855507 2007-12-29
  • 打赏
  • 举报
回复
wzrbb 表中的字段分别为,安质员姓名,所在区队,时间,班次,工作地点,隐患内容,罚款,违章人,专业,违章类型,违章内容,计分,考核人,类型

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧