Code Bye

跪拜!要得到如下效果,SQl语句怎么样写,能否只能用游标了

原始数据
name   age   sex
A          12     man
B          12     women
D          13     man
E          13     man

要的结果
age   sex   序号
12     man    1
12    women  2
13     man      1

关键是序号。 序号必须按age,sex分组后产生序号。例如年龄是12分组后是2条的话,一条序号1,一条序号2. 然后不同的age,sex分组必须从1重新开始。大家有办法吗。
解决方案

10

不同的age,sex分组必须从1重新开始?
这个是什么意思,假如是不同age,sex要从1开始,那你要的结果中序号是不是不对呢

10

尝试了一下,可能性能不算太高
create table T1 (
name nvarchar(10),
age int,
sex varchar(10)
);
insert into T1 (name,age,sex) values ( "A",12,"man"),( "B",12,"women"),( "C",13,"man"),( "D",13,"man"),( "E",14,"women");
select distinct age,sex,case when exists(select * from T1 where age = a.age and sex = "man") and sex = "man" then 1
							 when exists(select * from T1 where age = a.age and sex = "man") and sex = "women" then 2
                             else 1 end as 排名
	from T1 a
    order by age, 排名;

# age, sex, 排名
“12”, “man”, “1”
“12”, “women”, “2”
“13”, “man”, “1”
“14”, “women”, “1”


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明跪拜!要得到如下效果,SQl语句怎么样写,能否只能用游标了