SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 546|回复: 2
打印 上一主题 下一主题

看看此帖有无简便解法

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-9-15 14:56:55 | 只看该作者

看看此帖有无简便解法

一个表中有sex,age,name……字段,现在,需要将sex,age均相同的人识别为一组,并建立组号gid,gid依次累加。(即添加gid)

SQL server中的存储过程实现太复杂了

[code:9a20f]declare @sex char(2), @age char(2),
@i int
declare cur_group cursor
for
select sex,age from tbl group by sex, age
for read_only

open cur_group
fetch next from cur_group into @sex, @age

set @i = 1
while @@fetch_status = 0
begin
update tbl set gid = @i where sex=@sex and age=@age
fetch next from cur_group into @sex, @age
set @i = @i + 1
end

close cur_group
deallocate cur_group [/code:9a20f]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-9-16 09:06:34 | 只看该作者

test

不明白你的gid,依次累加是什么意思?
我有一个解法
[code:e5f31]proc sort data=tem;
  by sex age;
data tem1;
  retain no 0;
  set tem;
  by a b;
  flag=no;
  if last.b then no+1;
run;
proc sql;
  create table tem3 as
  select count(flag) as c,sex,age
  from tem2
  group by flag;
quit;[/code:e5f31]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-9-16 11:54:28 | 只看该作者

感谢gbt

你提供的代码的确很简单,对我很有启发,多谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-10 22:51 , Processed in 0.387442 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表