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