--建立测试环境
Create Table TEST
(类别 Varchar(10),
产品 Varchar(10),
数量 Int)
--插入数据
Insert TEST Values('A','A01',10)
Insert TEST Values('A','A02',13)
Insert TEST Values('A','A03',12)
Insert TEST Values('A','A05',15)
Insert TEST Values('A','A06',11)
Insert TEST Values('B','B01',20)
Insert TEST Values('B','B02',10)
Insert TEST Values('B','B03',17)
--测试
Select * from TEST A
Where Not Exists(Select 1 from TEST Where 类别=A.类别 And 数量>A.数量 Having Count(1)>1)
Order By 类别,数量 Desc
--删除测试环境
Drop Table TEST
--结果
/*
类别 产品 数量
A A05 15
A A02 13
B B01 20
B B03 17
*/
Create Table TEST
(类别 Varchar(10),
产品 Varchar(10),
数量 Int)
--插入数据
Insert TEST Values('A','A01',10)
Insert TEST Values('A','A02',13)
Insert TEST Values('A','A03',12)
Insert TEST Values('A','A05',15)
Insert TEST Values('A','A06',11)
Insert TEST Values('B','B01',20)
Insert TEST Values('B','B02',10)
Insert TEST Values('B','B03',17)
--测试
Select * from TEST A
Where Not Exists(Select 1 from TEST Where 类别=A.类别 And 数量>A.数量 Having Count(1)>1)
Order By 类别,数量 Desc
--删除测试环境
Drop Table TEST
--结果
/*
类别 产品 数量
A A05 15
A A02 13
B B01 20
B B03 17
*/
insert into a select 'a','x','1'
insert into a select 'a','y','5'
insert into a select 'a','z','6'
insert into a select 'b','xx','4'
insert into a select 'b','yy','5'
insert into a select 'b','zz','3'
insert into a select 'c','x2','4'
insert into a select 'c','y2','5'
insert into a select 'c','z1','6'
create function max_2 (@a varchar(10),@y varchar(10))----判断函数
returns int
as
begin
declare
@m int,
@n int,
@m1 int
select @m=max(c) from a where a=@a
select @n=c from a where a=@a and b=@y
if (@n=@m)
return 1
else
begin
select @m1=max(c)
from a
where a=@a and c != @m
end
if (@n=@m1)
return 1
return 0
endselect a,b,c
from a
where dbo.max_2(a,b)=1
order by a,c --结果
--a y 5
--a z 6
--b xx 4
--b yy 5
--c y2 5
--c z1 6
--建立测试环境
Create Table TEST
(类别 Varchar(10),
产品 Varchar(10),
数量 Int)
--插入数据
Insert TEST Values('A','A01',10)
Insert TEST Values('A','A02',13)
Insert TEST Values('A','A03',12)
Insert TEST Values('A','A05',15)
Insert TEST Values('A','A06',11)
Insert TEST Values('B','B01',20)
Insert TEST Values('B','B02',10)
Insert TEST Values('B','B03',17)
--测试
Select * from TEST A
Where(Select count(*) from TEST Where 类别=A.类别 And 数量>A.数量)<2
Order By 类别,数量 Desc
--删除测试环境
Drop Table TEST
--结果
/*
类别 产品 数量
A A05 15
A A02 13
B B01 20
B B03 17
*/