日期:2014-05-18 浏览次数:20574 次
--一定要用游标吗? select * from tb a where not exists (select 1 from tb where 销售员 = a.销售员 and 奖金>a.奖金)
------解决方案--------------------
select * from (select rank() over(partition by 销售员 order by 奖金) no,* from tb) where no=1
------解决方案--------------------
select 销售员,客户,max(奖金) as 奖金 from tablename group by 销售员,客户
------解决方案--------------------
我决定 他的每个帖子我都去蹭蹭分
------解决方案--------------------
select 销售员,客户 from tb t where 奖金 = (select max(奖金) from tb where 销售员 = t.销售员)
------解决方案--------------------
select 销售员,客户 from tb t where 奖金 = (select max(奖金) from tb where 销售员 = t.销售员)
------解决方案--------------------
CREATE TABLE TB( 销售员 VARCHAR(20), 客户 VARCHAR(20), 奖金 INT ) INSERT INTO TB(销售员,客户,奖金) SELECT '销售a','客户a',12 UNION ALL SELECT '销售a','客户b',11 UNION ALL SELECT '销售a','客户c',19 UNION ALL SELECT '销售b','客户a',12 UNION ALL SELECT '销售b','客户b',10 UNION ALL SELECT '销售c','客户c',12 select * into #tb from tb where 1<>1 --游标实现 DECLARE @sales varchar(20),@cus varchar(20),@NUMBER int DECLARE SL CURSOR FOR SELECT * FROM TB OPEN SL FETCH NEXT FROM SL INTO @sales,@cus,@NUMBER WHILE @@FETCH_STATUS=0 BEGIN IF not exists(select 1 from #tb where 销售员=@sales and 奖金>@NUMBER) begin delete #tb where 销售员=@sales insert into #tb select @sales,@cus,@NUMBER end FETCH NEXT FROM SL INTO @sales,@cus,@NUMBER END CLOSE SL DEALLOCATE SL --------- select * from #tb DROP TABLE tb,#tb /* 销售员 客户 奖金 -------------------- -------------------- ----------- 销售a 客户c 19 销售b 客户a 12 销售c 客户c 12 (3 行受影响)