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

这样的查询怎么查

2012-03-13 
这样的查询如何查?人员批次部门 数量状态A190888NB180888NC170888YA290888YB280888YC270888YA390888NB3808

这样的查询如何查?

人员 批次 部门 数量 状态 
A 1 90 888 N
B 1 80 888 N
C 1 70 888 Y
A 2 90 888 Y
B 2 80 888 Y
C 2 70 888 Y
A 3 90 888 N
B 3 80 888 N
C 3 70 888 Y
A 4 90 888 Y
B 4 80 888 Y
C 4 70 888 Y

按 编码 部门 汇总数量 如编码 部门 在不同批次分别出现 只取批次最大的状态为Y的一条 
 返回

A 数量汇总
B 数量汇总
C 数量汇总

[解决办法]

SQL code
if object_id('[TB]') is not null drop table [TB]gocreate table [TB] (人员 nvarchar(2),批次 int,部门 int,数量 int,状态 nvarchar(2))insert into [TB]select 'A',1,90,888,'N' union allselect 'B',1,80,888,'N' union allselect 'C',1,70,888,'Y' union allselect 'A',2,90,888,'Y' union allselect 'B',2,80,888,'Y' union allselect 'C',2,70,888,'Y' union allselect 'A',3,90,888,'N' union allselect 'B',3,80,888,'N' union allselect 'C',3,70,888,'Y' union allselect 'A',4,90,888,'Y' union allselect 'B',4,80,888,'Y' union allselect 'C',4,70,888,'Y'select * from [TB]SELECT  A.人员,A.部门,A.数量FROM    TB AWHERE   状态 = 'Y'        AND NOT EXISTS ( SELECT 1                         FROM   TB B                         WHERE  A.人员 = B.人员                                AND A.批次 < B.批次                                AND A.部门 = B.部门 )                                                                /*人员    部门    数量A    90    888B    80    888C    70    888  */ 

热点排行