sql server中有一个表,其中相同id对应许多行,如何取相同id中的前三行数据?
比如:id,name,score分别为:1,A,90;1,B,85;1,C,85;2,D,78;2,E,88;2,F,87;2,G,75;如何取出各id下的前两行数据,得...
比如:
id, name,score分别为:
1,A,90;
1,B,85;
1,C,85;
2,D,78;
2,E,88;
2,F,87;
2,G,75;
如何取出各id下的前两行数据,得到结果如下:
1,A,90;
1,B,85;
2,D,78;
2,E,88; 展开
id, name,score分别为:
1,A,90;
1,B,85;
1,C,85;
2,D,78;
2,E,88;
2,F,87;
2,G,75;
如何取出各id下的前两行数据,得到结果如下:
1,A,90;
1,B,85;
2,D,78;
2,E,88; 展开
2个回答
展开全部
--先写一个函数,输入name,得到1和0(是否前三行)
create function GetTop3(@id int,@name varchar(100))
return bit
as
begin
declare
@return bit,
@getName1 varchar(100),
@getName2 varchar(100),
@getName3 varchar(100)
select top 1 @getName1=name from 表名 where id=@id
select top 2 @getName2=name from 表名 where id=@id
select top 3 @getName3=name from 表名 where id=@id
return (case when @name=@getName1 or @name=@getName2 or @name=@getName3 then 1 else 0 end)
end
--函数建好了之后就可以在查询里用了:
select * from 表名 where GetTop3(id,name)>0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |