怎样来汇总查询?
有张a表
学校 姓名 科目 成绩 审核
一中 小明 语文 88 是
一中 小黄 英语 89 是
一中 小黄 英语 89 是
一中 小明 化学 99 是
一中 小明 数学 100 否
二中 小李 英语 100 是
一中 小黄 语文 87 是
汇总查询如果某个同学有审核有否的汇总成绩就为0,最好用一句效率高的sql,当前数据库是sql2000的。
查询效果如下:
姓名 成绩 学校
小明 0 一中
小李 100 二中
小黄 265 一中
[解决办法]
----------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-10-12 09:05:09
-- Version:
-- Microsoft SQL Server 2014 (CTP1) - 11.0.9120.5 (X64)
--Jun 10 2013 20:09:10
--Copyright (c) Microsoft Corporation
--Enterprise Evaluation Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------
--> 测试数据:[a]
if object_id('[a]') is not null drop table [a]
go
create table [a]([学校] varchar(4),[姓名] varchar(4),[科目] varchar(4),[成绩] int,[审核] varchar(2))
insert [a]
select '一中','小明','语文',88,'是' union all
select '一中','小黄','英语',89,'是' union all
select '一中','小黄','英语',89,'是' union all
select '一中','小明','化学',99,'是' union all
select '一中','小明','数学',100,'否' union all
select '二中','小李','英语',100,'是' union all
select '一中','小黄','语文',87,'是'
--------------开始查询--------------------------
select 学校,姓名,SUM( 成绩 )成绩
from [a]
WHERE 审核='是' AND NOT EXISTS (
SELECT 1 FROM [a] b WHERE a.学校=b.学校 AND a.姓名=b.姓名 AND b.审核='否')
GROUP BY 学校,姓名
UNION ALL
select 学校,姓名,0 成绩
from [a]
WHERE 审核='否'
----------------结果----------------------------
/*
学校 姓名 成绩
---- ---- -----------
一中 小黄 265
二中 小李 100
一中 小明 0
*/