原始数据
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重新开始。大家有办法吗。
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开始,那你要的结果中序号是不是不对呢
这个是什么意思,假如是不同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”