<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: SQL questions for joining two tables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/431991#M106915</link>
    <description>&lt;P&gt;You want a full join:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql; 
create table d3 as
select 
    coalesce(a.id1, b.id1) as id1, 
    coalesce(a.id2, b.id2) as id2, 
    C1, C2 
from 
    (select id1, id2, count(*) as c1 from d1 group by id1, id2) as a
	full join
	(select id1, id2, count(*) as c2 from d2 group by id1, id2) as b
        on a.id1=b.id1 and a.id2=b.id2
	order by id1, id2;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 29 Jan 2018 22:19:57 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2018-01-29T22:19:57Z</dc:date>
    <item>
      <title>SQL questions for joining two tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/431958#M106903</link>
      <description>&lt;P&gt;I've two data sets I need to use SQL to stack up or join after doing the count (# of records). I then need to sum up the count from data set 1 and the count from data set 2. Since the data sets are really huge, I'm trying to do in fewer steps if possible. Here is the code: I used UNION to join &amp;nbsp;but it would only read in the count variable from data 1, not the count from data 2. If I use OUTER UNION Corr, it will treat those from data 1 and data 2 as two records, naturally. I was hoping there is a way SAS SQL can smartly consolidate the two cases. I know I can output the count-processed data for data 1, and then for data 2, and then create data 3 through FULL OUTER JOIN but I was hoping not to output the intermediate steps to cut my data running time. Is there a way? &amp;nbsp;Thanks in advance.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data d1; input id1 id2;
datalines;
1 11
2 12
2 12
3 11
3 14
3 14
;
data d2; input id1 id2;
datalines;
1 11
4 15
4 15
;
proc sql; create table d3 as 
	select distinct id1, id2, count(*) as C1 from d1 group by id1, id2
	outer union corr 
	select distinct id1, id2, count(*) as C2 from d2 group by id1, id2
	order by id1, id2;
quit;
proc print data=d1; run;
proc print data=d2; run;
proc print data=d3; run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is what I got if I use UNION or OUTER UNION CORR.&lt;/P&gt;
&lt;TABLE width="640"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="2" width="128"&gt;If using UNION&lt;/TD&gt;
&lt;TD width="64"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD colspan="3" width="192"&gt;If using OUTER UNION CORR&lt;/TD&gt;
&lt;TD width="64"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;Obs&lt;/TD&gt;
&lt;TD width="64"&gt;id1&lt;/TD&gt;
&lt;TD width="64"&gt;id2&lt;/TD&gt;
&lt;TD width="64"&gt;C1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;Obs&lt;/TD&gt;
&lt;TD width="64"&gt;id1&lt;/TD&gt;
&lt;TD width="64"&gt;id2&lt;/TD&gt;
&lt;TD width="64"&gt;C1&lt;/TD&gt;
&lt;TD width="64"&gt;C2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;11&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;11&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;11&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;11&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;14&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;11&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;14&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is the data I want.&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 240pt;" border="0" width="320" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD width="64" height="20" class="xl71" style="height: 15.0pt; width: 48pt;"&gt;Obs&lt;/TD&gt;
&lt;TD width="64" class="xl72" style="width: 48pt;"&gt;id1&lt;/TD&gt;
&lt;TD width="64" class="xl72" style="width: 48pt;"&gt;id2&lt;/TD&gt;
&lt;TD width="64" class="xl72" style="width: 48pt;"&gt;C1&lt;/TD&gt;
&lt;TD width="64" class="xl73" style="width: 48pt;"&gt;C2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" class="xl66" style="height: 15.0pt;"&gt;1&lt;/TD&gt;
&lt;TD class="xl65"&gt;1&lt;/TD&gt;
&lt;TD class="xl65"&gt;11&lt;/TD&gt;
&lt;TD class="xl65"&gt;1&lt;/TD&gt;
&lt;TD class="xl67"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" class="xl66" style="height: 15.0pt;"&gt;3&lt;/TD&gt;
&lt;TD class="xl65"&gt;2&lt;/TD&gt;
&lt;TD class="xl65"&gt;12&lt;/TD&gt;
&lt;TD class="xl65"&gt;2&lt;/TD&gt;
&lt;TD class="xl67"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" class="xl66" style="height: 15.0pt;"&gt;4&lt;/TD&gt;
&lt;TD class="xl65"&gt;3&lt;/TD&gt;
&lt;TD class="xl65"&gt;11&lt;/TD&gt;
&lt;TD class="xl65"&gt;1&lt;/TD&gt;
&lt;TD class="xl67"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" class="xl66" style="height: 15.0pt;"&gt;5&lt;/TD&gt;
&lt;TD class="xl65"&gt;3&lt;/TD&gt;
&lt;TD class="xl65"&gt;14&lt;/TD&gt;
&lt;TD class="xl65"&gt;2&lt;/TD&gt;
&lt;TD class="xl67"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" class="xl68" style="height: 14.4pt;"&gt;6&lt;/TD&gt;
&lt;TD class="xl69"&gt;4&lt;/TD&gt;
&lt;TD class="xl69"&gt;15&lt;/TD&gt;
&lt;TD class="xl69"&gt;.&lt;/TD&gt;
&lt;TD class="xl70"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Mon, 29 Jan 2018 20:32:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/431958#M106903</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2018-01-29T20:32:14Z</dc:date>
    </item>
    <item>
      <title>Re: SQL questions for joining two tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/431971#M106910</link>
      <description>&lt;P&gt;For a SQL guru, this should be easy.&amp;nbsp; Until one replies, you can just follow a slightly different path:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Actually create summaries of d1 and d2, such as:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;/P&gt;
&lt;P&gt;create table d1counts as select id1, id2, count(*) as c1 from d1 group by id1, id2;&lt;/P&gt;
&lt;P&gt;create table d2counts as select id1, id2, count(*) as c2 from d2 group by id1, id2;&lt;/P&gt;
&lt;P&gt;quit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It should be possible to create d1counts and d2counts as views rather than data sets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then put them together:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data d3;&lt;/P&gt;
&lt;P&gt;merge d1counts d2counts;&lt;/P&gt;
&lt;P&gt;by id1 id2;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jan 2018 21:14:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/431971#M106910</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-01-29T21:14:00Z</dc:date>
    </item>
    <item>
      <title>Re: SQL questions for joining two tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/431991#M106915</link>
      <description>&lt;P&gt;You want a full join:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql; 
create table d3 as
select 
    coalesce(a.id1, b.id1) as id1, 
    coalesce(a.id2, b.id2) as id2, 
    C1, C2 
from 
    (select id1, id2, count(*) as c1 from d1 group by id1, id2) as a
	full join
	(select id1, id2, count(*) as c2 from d2 group by id1, id2) as b
        on a.id1=b.id1 and a.id2=b.id2
	order by id1, id2;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 29 Jan 2018 22:19:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/431991#M106915</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-01-29T22:19:57Z</dc:date>
    </item>
    <item>
      <title>Re: SQL questions for joining two tables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/432175#M106999</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data d1; input id1 id2;
datalines;
1 11
2 12
2 12
3 11
3 14
3 14
;
data d2; input id1 id2;
datalines;
1 11
4 15
4 15
;

proc sql;
select coalesce(a.id1,b.id1) as id1,coalesce(a.id2,b.id2) as id2,c1,c2
 from (select id1,id2,count(*) as c1 from d1 group by id1,id2) as a 
      full join
      (select id1,id2,count(*) as c2 from d2 group by id1,id2) as b 
      on a.id1=b.id1 and a.id2=b.id2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 30 Jan 2018 13:12:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SQL-questions-for-joining-two-tables/m-p/432175#M106999</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-01-30T13:12:33Z</dc:date>
    </item>
  </channel>
</rss>

