<?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: UNION question in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710420#M218693</link>
    <description>It worked.  Thanks so much.&lt;BR /&gt;</description>
    <pubDate>Sun, 10 Jan 2021 06:11:51 GMT</pubDate>
    <dc:creator>greg6363</dc:creator>
    <dc:date>2021-01-10T06:11:51Z</dc:date>
    <item>
      <title>UNION question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710408#M218687</link>
      <description>&lt;P&gt;I have a summary dataset that I group by a particular variable. There are days when a category may produce no records.&amp;nbsp; Since SAS does not produce a zero value output when no input data is generated, I created a second table with zero values for each category which I want to combine with the summary dataset to produce a complete output set that populates each category group (zeros for categories with no data).&lt;/P&gt;
&lt;P&gt;Let me show the two datasets:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Set1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Date&amp;nbsp; &amp;nbsp; Category&amp;nbsp; &amp;nbsp;Accts&amp;nbsp; &amp;nbsp;Dollars&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;1-10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$1000&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;21-30&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 30&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$9800&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;31-40&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$15430&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;41-50&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 110&amp;nbsp; &amp;nbsp; &amp;nbsp; $23090&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp; 51-60&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 27&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$8500&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Set2&lt;/P&gt;
&lt;P&gt;Category&amp;nbsp; &amp;nbsp;Accts&amp;nbsp; &amp;nbsp;Dollars&lt;/P&gt;
&lt;P&gt;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;1-10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;11-20&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;21-30&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;31-40&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;41-50&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;51-60&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;61-70&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;71-80&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;81-90&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;91-100&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to use the UNION operator to join the two data sets that will keep the populated rows intact from Set 1 while bringing in the&amp;nbsp;&lt;/P&gt;
&lt;P&gt;rows with the zero value categories from Set 2 that weren't populated in Set 1.&amp;nbsp; The output data set should look like Set 3 below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Set 3&lt;/P&gt;
&lt;P&gt;Date&amp;nbsp; &amp;nbsp; Category&amp;nbsp; &amp;nbsp;Accts&amp;nbsp; &amp;nbsp;Dollars&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;1-10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$1000&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;11-20&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;21-30&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 30&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$9800&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;31-40&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 83&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$15430&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;41-50&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 110&amp;nbsp; &amp;nbsp; &amp;nbsp; $23090&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp; 51-60&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 27&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$8500&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp; 61-70&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp; 71-80&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp; 81-90&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;1/5/21&amp;nbsp; &amp;nbsp;91-100&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have enclosed the code I am using to perform this task but it's not producing the above output.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;BR /&gt;create table set3 as&lt;BR /&gt;select a.date, a.category, a.accts, a.dollars&lt;BR /&gt;from set1 a&lt;/P&gt;
&lt;P&gt;group by a.category&lt;BR /&gt;having accts gt 0 and dollars gt 0&lt;BR /&gt;union&lt;BR /&gt;select b.category, b.accts, b.dollars,0&lt;BR /&gt;from set2 b;&lt;BR /&gt;quit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From my query, the following errors are generated in the log file:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ERROR: Column 1 from the first contributor of UNION is not the same type as its counterpart&lt;BR /&gt;from the second.&lt;BR /&gt;ERROR: Column 2 from the first contributor of UNION is not the same type as its counterpart&lt;BR /&gt;from the second&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any assistance would be greatly appreciated.&amp;nbsp; Thanks.&lt;/P&gt;</description>
      <pubDate>Sun, 10 Jan 2021 01:50:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710408#M218687</guid>
      <dc:creator>greg6363</dc:creator>
      <dc:date>2021-01-10T01:50:50Z</dc:date>
    </item>
    <item>
      <title>Re: UNION question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710410#M218688</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21164"&gt;@greg6363&lt;/a&gt;&amp;nbsp; First off, Your problem is best addressed using format technique PRELOADFMT to include groups that are not available input dataset. It's a bit of learning curve, but very useful . I could demo here, ho&lt;SPAN&gt;wever I'm awefully tired. I encourage you to google.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;2ndly, For UNION or any SET operator to&amp;nbsp;work, you need the position of the columns in both SELECT clauses to be of same datatype as SET operation is based on column positions rather than variable names.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To fix that, replace &lt;STRONG&gt;UNION&lt;/STRONG&gt;&amp;nbsp;&lt;SPAN&gt;with &lt;STRONG&gt;OUTER UNION CORR and see if that&amp;nbsp;works. Best!&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 10 Jan 2021 02:50:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710410#M218688</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2021-01-10T02:50:26Z</dc:date>
    </item>
    <item>
      <title>Re: UNION question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710412#M218689</link>
      <description>&lt;P&gt;Use joins instead of set operations:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
select 
    a.date format=yymmdd10., 
    b.category,
    coalesce(c.accts, 0) as accts,
    coalesce(c.dollars, 0) as dollars
from
    (select unique date from set1) as a cross join 
    (select unique category from set2) as b left join
    set1 as c on a.date=c.date and b.category=c.category;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PGStats_0-1610252192709.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/53368iDCB38983D55348D9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="PGStats_0-1610252192709.png" alt="PGStats_0-1610252192709.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Note that Set2 only needs the categories.&lt;/P&gt;</description>
      <pubDate>Sun, 10 Jan 2021 04:16:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710412#M218689</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2021-01-10T04:16:54Z</dc:date>
    </item>
    <item>
      <title>Re: UNION question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710420#M218693</link>
      <description>It worked.  Thanks so much.&lt;BR /&gt;</description>
      <pubDate>Sun, 10 Jan 2021 06:11:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/UNION-question/m-p/710420#M218693</guid>
      <dc:creator>greg6363</dc:creator>
      <dc:date>2021-01-10T06:11:51Z</dc:date>
    </item>
  </channel>
</rss>

