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

 

I have this table that have the volume for each product:

 

PRODUCTVOLUME
NK200
CN180
CY220

 

And another table the have the percentage share for each country:

 

REGIONSHARE
AUSTRALIA0.45
CHINA0.55

 

 

I want this output, the propotion the volume of each product by each country

 

PRODUCTREGIONVOLUME
NKAUSTRALIA90
NKCHINA110
CNAUSTRALIA81
CNCHINA99
CYAUSTRALIA99
CYCHINA121

 

 

How do I achieve this in PROC SQL? I have simplified the table, in real there are more columns.

 

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

You're looking for a cross join or natural join.

You can use a.*, b.* to specify keeping all columns in each table. 

 

proc sql;
create table want as
select a.*, b.*, a.volume*b.share as volume_proportion
from table1 as a
CROSS JOIN table2 as b
order by a.product, b.region;
quit;

View solution in original post

1 REPLY 1
Reeza
Super User

You're looking for a cross join or natural join.

You can use a.*, b.* to specify keeping all columns in each table. 

 

proc sql;
create table want as
select a.*, b.*, a.volume*b.share as volume_proportion
from table1 as a
CROSS JOIN table2 as b
order by a.product, b.region;
quit;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 1 reply
  • 845 views
  • 0 likes
  • 2 in conversation