CREATE TABLE #ls1(新旧表 VARCHAR(10),生产厂家 VARCHAR(15),检测结果 VARCHAR(10))
INSERT INTO #ls1 VALUES('新表','苍南','否')
INSERT INTO #ls1 VALUES('旧表','天信','是')
INSERT INTO #ls1 VALUES('新表','天津五厂','否')
INSERT INTO #ls1 VALUES('旧表','苍南','否')
INSERT INTO #ls1 VALUES('新表','罗托克','是')
INSERT INTO #ls1 VALUES('旧表','苍南','是')
INSERT INTO #ls1 VALUES('新表','天信','否')
INSERT INTO #ls1 VALUES('旧表','罗托克','否')
SELECT * FROM #LS1
SELECT 生产厂家,count(生产厂家) as 合计,SUM(CASE 新旧表 WHEN '新表' THEN 1 ELSE 0 END) as 新表,
SUM(CASE 新旧表 WHEN '旧表' THEN 1 ELSE 0 END) as 旧表,
SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END) as 合格,SUM(CASE 检测结果 WHEN '否' THEN 1 ELSE 0 END) as 不合格
--,(SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END)/count(生产厂家) ) as 合格率
,SUM(CASE 检测结果 WHEN '是' THEN 1.0 ELSE 0.0 END)/count(生产厂家)
from #LS1 group by 生产厂家
UNION
SELECT '合计' 生产厂家,count(生产厂家) as 合计,SUM(CASE 新旧表 WHEN '新表' THEN 1 ELSE 0 END) as 新表,
SUM(CASE 新旧表 WHEN '旧表' THEN 1 ELSE 0 END) as 旧表,
SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END) as 合格,SUM(CASE 检测结果 WHEN '否' THEN 1 ELSE 0 END) as 不合格
--,(SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END)/count(生产厂家) ) as 合格率
,SUM(CASE 检测结果 WHEN '是' THEN 1.0 ELSE 0.0 END)/count(生产厂家)
from #LS1
DROP TABLE #ls1
根据你提供的数据 得到的结果与你上面的结果有出入
你合格率计算是两个整数进行运算 返回的也是整数所以会有此问题