BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.

Hi all,

 

I have a dataset of ds1.

data ds1;
infile datalines;
input name1 $ name2 $;
datalines;
G A
A B
I C
B D
;
RUN;

 

I need output like 

NAME1 NAME2
G A
A A
I A
B A
G B
A B
I B
B B
G C
A C
I C
B C
G D
A D
I D
B D

 

I follow in proc sql cartesian join but this output not getting.

Can anyone suggest how it can be done.

Thanks in advance.

1 ACCEPTED SOLUTION

Accepted Solutions
Ravikumarkummari
Quartz | Level 8

proc sql;
create table ds_final as
select a.name2, b.name1 from ds1 a cross join ds1 b ;
quit;

 

 

 

Solved thank u

Actually i not mentioning the variables and follow cross join.

select * from ds1 cross join ds1;

 

 

View solution in original post

3 REPLIES 3
Reeza
Super User

A cartesian join is correct. Post your code/log and explain how it does not match your desired output. 

Ravikumarkummari
Quartz | Level 8

proc sql;
create table ds_final as
select a.name2, b.name1 from ds1 a cross join ds1 b ;
quit;

 

 

 

Solved thank u

Actually i not mentioning the variables and follow cross join.

select * from ds1 cross join ds1;

 

 

Ksharp
Super User
data ds1;
infile datalines;
input name1 $ name2 $;
datalines;
G A
A B
I C
B D
;
RUN;
proc sql;
select *
 from ds1(keep=name1),ds1(keep=name2) order by 2;
quit;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1139 views
  • 0 likes
  • 3 in conversation