首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么来汇总查询

2013-10-14 
怎样来汇总查询?有张a表学校姓名科目成绩审核一中小明语文88是一中小黄英语89是一中小黄英语89是一中小明

怎样来汇总查询?
有张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
*/

热点排行
Bad Request.