<?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: Proc sql remerge of inline virtual view behaves unexpectedly in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400379#M97066</link>
    <description>&lt;P&gt;Another variation that produces the correct output:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;
	CREATE TABLE TEMP1 AS
		SELECT 1 AS NUM, 'A' AS ID FROM SASHELP.AIR;&lt;BR /&gt;
	CREATE TABLE TEMP2 AS
		SELECT 2 AS NUM, 'B' AS ID FROM SASHELP.AIR;&lt;BR /&gt;
	CREATE TABLE TEMP3 AS
		SELECT 3 AS NUM, 'C' AS ID FROM SASHELP.AIR;&lt;BR /&gt;
	CREATE TABLE TEMP4 AS
		SELECT 4 AS NUM, 'D' AS ID FROM SASHELP.AIR;
		
	SELECT 
		ID,
		SUM(NUM)
	FROM
		(
		SELECT * FROM TEMP1
			UNION
		SELECT * FROM TEMP2
			UNION
		SELECT * FROM TEMP3
			UNION
		SELECT * FROM TEMP4		
		)
		;
QUIT;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="image.png" style="width: 129px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/15546iD9E5A3CF810987BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 02 Oct 2017 18:22:41 GMT</pubDate>
    <dc:creator>BenNafziger</dc:creator>
    <dc:date>2017-10-02T18:22:41Z</dc:date>
    <item>
      <title>Proc sql remerge of inline virtual view behaves unexpectedly</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400367#M97060</link>
      <description>&lt;P&gt;When working with Oracle SQL I will often use a tiny virtual dataset to test some idea or function out.&lt;BR /&gt;Ex:&lt;BR /&gt;WITH TEMP AS (&lt;BR /&gt;&amp;nbsp; &amp;nbsp; SELECT 1 AS NUM, 'A' AS ID FROM DUAL&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; UNION&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;SELECT 2 AS NUM, 'B' AS ID FROM DUAL&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;UNION&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;SELECT 3 AS NUM, 'C' AS ID FROM DUAL&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;UNION&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;SELECT 4 AS NUM, 'D' AS ID FROM DUAL&lt;BR /&gt;)&lt;BR /&gt;SELECT ID, SUM(NUM) AS SUMNUM FROM TEMP GROUP BY ID;&lt;BR /&gt;&lt;BR /&gt;I've recently been learning about proc sql's remerge feature. I wanted to test my knowledge of how it works, so I built and ran this small test case.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;
SELECT 
	ID,
	SUM(NUM)
FROM
(
	SELECT 1 AS NUM, 'A' AS ID FROM SASHELP.AIR
		UNION
	SELECT 2 AS NUM, 'B' AS ID FROM SASHELP.AIR
		UNION
	SELECT 3 AS NUM, 'C' AS ID FROM SASHELP.AIR
		UNION
	SELECT 4 AS NUM, 'D' AS ID FROM SASHELP.AIR
);
QUIT;&lt;/CODE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="image.png" style="width: 129px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/15547iD3EC9232F99AC3FF/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This result was unexpected. I guessed that the cause of this unexpected output was the 'fake' table.&lt;BR /&gt;To test this theory I wrote the virtual table to a dataset and used that dataset to rerun the proc sql query.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;
	CREATE TABLE TEMP AS
		SELECT 1 AS NUM, 'A' AS ID FROM SASHELP.AIR
			UNION
		SELECT 2 AS NUM, 'B' AS ID FROM SASHELP.AIR
			UNION
		SELECT 3 AS NUM, 'C' AS ID FROM SASHELP.AIR
			UNION
		SELECT 4 AS NUM, 'D' AS ID FROM SASHELP.AIR;

	SELECT 
		ID,
		SUM(NUM)
	FROM
		TEMP;
QUIT;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;Output:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="image.png" style="width: 129px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/15546iD9E5A3CF810987BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the output I expected from the first query.&lt;BR /&gt;&lt;BR /&gt;I've exhausted my google-fu and can't find anything that explains why this occurs. This is an edge case that I can't see ever coming up in my development work, but it still bugs me.&lt;BR /&gt;&lt;BR /&gt;Does anyone know why this happens or where I could find more information about the way SAS handles remerging?&lt;BR /&gt;&lt;BR /&gt;SAS system information:&lt;BR /&gt;SAS Enterprise Guide 7.12 (7.100.2.3350) (64-bit)&lt;BR /&gt;Base SAS Software&lt;BR /&gt;Custom version information: 9.4_M3&lt;BR /&gt;Image version information: 9.04.01M3P060315&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Oct 2017 17:52:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400367#M97060</guid>
      <dc:creator>BenNafziger</dc:creator>
      <dc:date>2017-10-02T17:52:40Z</dc:date>
    </item>
    <item>
      <title>Re: Proc sql remerge of inline virtual view behaves unexpectedly</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400379#M97066</link>
      <description>&lt;P&gt;Another variation that produces the correct output:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;
	CREATE TABLE TEMP1 AS
		SELECT 1 AS NUM, 'A' AS ID FROM SASHELP.AIR;&lt;BR /&gt;
	CREATE TABLE TEMP2 AS
		SELECT 2 AS NUM, 'B' AS ID FROM SASHELP.AIR;&lt;BR /&gt;
	CREATE TABLE TEMP3 AS
		SELECT 3 AS NUM, 'C' AS ID FROM SASHELP.AIR;&lt;BR /&gt;
	CREATE TABLE TEMP4 AS
		SELECT 4 AS NUM, 'D' AS ID FROM SASHELP.AIR;
		
	SELECT 
		ID,
		SUM(NUM)
	FROM
		(
		SELECT * FROM TEMP1
			UNION
		SELECT * FROM TEMP2
			UNION
		SELECT * FROM TEMP3
			UNION
		SELECT * FROM TEMP4		
		)
		;
QUIT;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="image.png" style="width: 129px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/15546iD9E5A3CF810987BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Oct 2017 18:22:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400379#M97066</guid>
      <dc:creator>BenNafziger</dc:creator>
      <dc:date>2017-10-02T18:22:41Z</dc:date>
    </item>
    <item>
      <title>Re: Proc sql remerge of inline virtual view behaves unexpectedly</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400410#M97072</link>
      <description>&lt;P&gt;it is answered about this here&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://communities.sas.com/t5/Base-SAS-Programming/PROC-SQL-remerging/td-p/332784" target="_blank"&gt;https://communities.sas.com/t5/Base-SAS-Programming/PROC-SQL-remerging/td-p/332784&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;please have a look&lt;/P&gt;</description>
      <pubDate>Mon, 02 Oct 2017 19:37:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400410#M97072</guid>
      <dc:creator>kiranv_</dc:creator>
      <dc:date>2017-10-02T19:37:48Z</dc:date>
    </item>
    <item>
      <title>Re: Proc sql remerge of inline virtual view behaves unexpectedly</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400434#M97075</link>
      <description>&lt;P&gt;Now consider this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC SQL;
	CREATE view TEMP AS
		SELECT 1 AS NUM, 'A' AS ID FROM SASHELP.AIR
			UNION
		SELECT 2 AS NUM, 'B' AS ID FROM SASHELP.AIR
			UNION
		SELECT 3 AS NUM, 'C' AS ID FROM SASHELP.AIR
			UNION
		SELECT 4 AS NUM, 'D' AS ID FROM SASHELP.AIR;

	SELECT 
		ID,
		SUM(NUM)
	FROM
		TEMP;
QUIT;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;                                    ID
                                    ------------
                                    D         10
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;At least in SAS 9.4 (TS1M1)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Oct 2017 20:16:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400434#M97075</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2017-10-02T20:16:23Z</dc:date>
    </item>
    <item>
      <title>Re: Proc sql remerge of inline virtual view behaves unexpectedly</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400460#M97085</link>
      <description>&lt;P&gt;You forgot the GROUP BY clause.&amp;nbsp; Your Oracle example had that clause.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;SELECT ID, sum(NUM) as TOT
FROM (SELECT 1 AS NUM, 'A' AS ID FROM SASHELP.class(obs=1)
UNION SELECT 2 AS NUM, 'B' AS ID FROM SASHELP.class(obs=1)
UNION SELECT 3 AS NUM, 'C' AS ID FROM SASHELP.class(obs=1)
UNION SELECT 4 AS NUM, 'D' AS ID FROM SASHELP.class(obs=1)
     )
group by 1
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;ID       TOT
------------
A          1
B          2
C          3
D          4&lt;/PRE&gt;
&lt;P&gt;Without the GROUP BY SAS should have re-merged the SUM() with all of the input records, but there are some bugs in its ability to properly detect that in this case. That is what led to it returning only one record.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Oct 2017 21:19:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400460#M97085</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2017-10-02T21:19:09Z</dc:date>
    </item>
    <item>
      <title>Re: Proc sql remerge of inline virtual view behaves unexpectedly</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400512#M97097</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/117134"&gt;@BenNafziger&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;&lt;BR /&gt;I've recently been learning about proc sql's remerge feature. I wanted to test my knowledge of how it works, so I built and ran this small test case.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So, the above discussion should convince you that the quirky behaviour you exposed is not a good example of how remerging is supposed to work. It is a bug which, fortunately, is not met too often in the &lt;EM&gt;real world&lt;/EM&gt; and hopefully will be fixed, someday.&lt;/P&gt;</description>
      <pubDate>Tue, 03 Oct 2017 03:21:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-sql-remerge-of-inline-virtual-view-behaves-unexpectedly/m-p/400512#M97097</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2017-10-03T03:21:06Z</dc:date>
    </item>
  </channel>
</rss>

