SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2919|回复: 16
打印 上一主题 下一主题

初来咋到,请教一个多对多的数据合并问题!谢谢!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2003-10-30 15:48:45 | 只看该作者

初来咋到,请教一个多对多的数据合并问题!谢谢!

想将下面两个数据库合并成一个,但涉及到重复数据问题,不知各位高手有什么办法没有?谢谢! <!-- s:oops: --><img src="{SMILIES_PATH}/icon_redface.gif" alt=":oops:" title="Embarassed" /><!-- s:oops: -->


Database A                                          
var1                           var2               
a                                 i
a                                 j
b                                 k
c                                 h

Database B                                          
var1                           var2               
a                                 1
a                                 2
a                                 3
b                                 4
b                                 5
c                                 6

Output
var1          var2         var3
a              i            1
a              i            2
a              i            3
a              j           1
a              j           2
a              j           3
b              k           4
b              k           5
c              h          6
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2003-10-30 18:17:25 | 只看该作者
proc sql;
create table output as
        select a.var1,a.var2,b.var2 as var3 from a cross join b
        on a.var1=b.var1
        order by var1,var2,var3;
quit;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2003-10-30 19:43:53 | 只看该作者
小弟对SQL不熟悉,运行程序时发现有错,不知该如何?也不知有没有DATA步的程序能解决这个问题!

166  proc sql;
167  create table output as
168  select a.var1,a.var2,b.var2 as var3 from a cross join b
NOTE: SCL source line.
169  on a.var1=b.var1
     --
     22
     76
ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',', '.', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, INNER, INTERSECT, JOIN,
              LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT, UNION, WHERE.

ERROR 76-322: Syntax error, statement will be ignored.

170  order by var1,var2,var3;
171  quit;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2003-10-31 01:37:29 | 只看该作者
proc sql;
create table output as
select a.var1,a.var2,b.var2 as var3 from a cross join b [color=darkred:2c095][b:2c095]where [/b:2c095][/color:2c095]a.var1=b.var1
order by var1,var2,var3;
quit;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2003-10-31 09:52:56 | 只看该作者
感谢JERRY,问题解决了!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2003-10-31 10:08:00 | 只看该作者
用where?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2003-10-31 10:20:24 | 只看该作者
对,用where,但我也不明白为什么用它!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2003-10-31 10:26:30 | 只看该作者
Data a;
input var1 $ var2 $;
cards;
a i
a j
b k
c h
;run;
Data b;
input var1 $ var2;
cards;
a 1
a 2
a 3
b 4
b 5
c 6
;run;
proc sql;
create table output as
        select a.var1,a.var2,b.var2 as var3 from a cross join b
        on a.var1=b.var1
        order by var1,var2,var3;
quit;
proc print;run;

这个程序我运行了很多遍都没有问题吗?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2003-10-31 11:24:08 | 只看该作者
哈哈,在SAS6.12上没问题,但SAS8.2就提示出错!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2003-10-31 12:01:56 | 只看该作者
还有一个小问题,运行程序后发现记录数和别人的不一样,经检查数据库是这样的,数据库a中的有些记录在b上没有,而b上的有些在a上也没有,如:
Data a;
input var1 $ var2 $;
cards;
a i
a j
b k
c h
w o
;
run;
Data b;
input var1 $ var2;
cards;
a 1
a 2
a 3
b 4
b 5
c 6
d 7
e 8
;
run;


最后要求数据库象这样子:
var1 var2 var3
a       i       1
a       i       2
a       i       3
a       j       1
a       j       2
a       j       3
b       k       4
b       k       5
c       h       6
d                7
e                8
w      o       .


高手再帮小弟看看怎么办!谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-5 19:08 , Processed in 0.220776 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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