我是sa的新手,我曾经做过oracle SQL
我之前也做了类似的问题
我以为这个问题可以解决问题。
但
我被困。
所以我的代码是这样
data stepstep;
input emplid KEY:$3. count;
cards;
11 11Y 1
11 11Y 2
11 11N 3
11 11N 4
11 11Y 5
11 11N 6
12 12Y 1
12 12Y 2
12 12N 3
;
run;
然后我尝试
data stepstep2;
set stepstep;
by key emplid NOTSORTED;
if first.key AND first.emplidthen rank=1;
ELSE rank+1;
run;
输出是这个
我想展示
emplid key count rank
11 11Y 1 1
11 11Y 2 1
11 11N 3 2
11 11N 4 2
11 11Y 5 3
11 11N 6 4
12 12Y 1 1
12 12Y 2 1
12 12N 3 2
所以新的经验来了,我想让“排名”从1开始倒数。
因此,在本例中,当第一个母词“ 12”到来时,等级又回到了1
我怎样才能做到这一点?
您需要适当地利用BY组,我认为对于初学者而言,它们的顺序不正确。尝试以下方法:
data stepstep2;
set stepstep;
by emplid KEY NOTSORTED;
if first.emplid then rank=1; *start of each emplid group;
ELSE if first.key rank+1; *start of each new key;
run;