<?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 PROC SQL QUERY in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329355#M73677</link>
    <description>&lt;P&gt;I have the below dataset and program.&amp;nbsp; In the test1 output, I only want the first record (min number in product) of every ID.&amp;nbsp; I have tried using HAVING....but got syntax error.&amp;nbsp; Anyone can help?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DATA TEST;&lt;BR /&gt;INPUT PRODUCT $ ID $ AMT;&lt;BR /&gt;DATALINES;&lt;BR /&gt;ABC 123 10000&lt;BR /&gt;ABD 123 20000&lt;BR /&gt;ABE 123 40000&lt;BR /&gt;ABC 124 11300&lt;BR /&gt;ABD 124 21800&lt;BR /&gt;ABE 124 65600&lt;BR /&gt;ABC 125 111300&lt;BR /&gt;ABD 125 231800&lt;BR /&gt;;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CREATE TABLE TEST1 AS SELECT DISTINCT&lt;BR /&gt;ID,&lt;BR /&gt;CASE WHEN PRODUCT NOT IN ('ABE') THEN COUNT(DISTINCT PRODUCT)-1 ELSE COUNT(DISTINCT PRODUCT) END AS PRODUCTS,&lt;BR /&gt;SUM(AMT) AS AMT&lt;BR /&gt;FROM TEST&lt;BR /&gt;GROUP BY ID&lt;BR /&gt;ORDER BY ID;&lt;BR /&gt;QUIT;&lt;/P&gt;</description>
    <pubDate>Thu, 02 Feb 2017 10:38:25 GMT</pubDate>
    <dc:creator>scb</dc:creator>
    <dc:date>2017-02-02T10:38:25Z</dc:date>
    <item>
      <title>PROC SQL QUERY</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329355#M73677</link>
      <description>&lt;P&gt;I have the below dataset and program.&amp;nbsp; In the test1 output, I only want the first record (min number in product) of every ID.&amp;nbsp; I have tried using HAVING....but got syntax error.&amp;nbsp; Anyone can help?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DATA TEST;&lt;BR /&gt;INPUT PRODUCT $ ID $ AMT;&lt;BR /&gt;DATALINES;&lt;BR /&gt;ABC 123 10000&lt;BR /&gt;ABD 123 20000&lt;BR /&gt;ABE 123 40000&lt;BR /&gt;ABC 124 11300&lt;BR /&gt;ABD 124 21800&lt;BR /&gt;ABE 124 65600&lt;BR /&gt;ABC 125 111300&lt;BR /&gt;ABD 125 231800&lt;BR /&gt;;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CREATE TABLE TEST1 AS SELECT DISTINCT&lt;BR /&gt;ID,&lt;BR /&gt;CASE WHEN PRODUCT NOT IN ('ABE') THEN COUNT(DISTINCT PRODUCT)-1 ELSE COUNT(DISTINCT PRODUCT) END AS PRODUCTS,&lt;BR /&gt;SUM(AMT) AS AMT&lt;BR /&gt;FROM TEST&lt;BR /&gt;GROUP BY ID&lt;BR /&gt;ORDER BY ID;&lt;BR /&gt;QUIT;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Feb 2017 10:38:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329355#M73677</guid>
      <dc:creator>scb</dc:creator>
      <dc:date>2017-02-02T10:38:25Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL QUERY</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329356#M73678</link>
      <description>&lt;P&gt;Can you post your log please? &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Feb 2017 10:40:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329356#M73678</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2017-02-02T10:40:31Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL QUERY</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329361#M73679</link>
      <description>&lt;P&gt;As for SQL:&lt;/P&gt;
&lt;PRE&gt;proc sql;
  create table WANT as
  select  *
  from    TEST
  group by ID
  having  AMT=min(AMT);
quit;
&lt;/PRE&gt;
&lt;P&gt;Is there a need to do it with SQL, looks like a simple sort take first observation to me:&lt;/P&gt;
&lt;PRE&gt;data test;
  input product $ id $ amt;
datalines;
ABC 123 10000
ABD 123 20000
ABE 123 40000
ABC 124 11300
ABD 124 21800
ABE 124 65600
ABC 125 111300
ABD 125 231800
;
run;

proc sort data=test;
  by id product amt;
run;

data want;
  set test;
  by id;
  if first.id;
run;&lt;/PRE&gt;</description>
      <pubDate>Thu, 02 Feb 2017 11:01:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329361#M73679</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-02-02T11:01:31Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL QUERY</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329364#M73680</link>
      <description>&lt;P&gt;The answer that I need:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp; Product&amp;nbsp;&amp;nbsp;&amp;nbsp; Amt&lt;/P&gt;&lt;P&gt;123&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 70000&lt;/P&gt;&lt;P&gt;124&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 98700&lt;/P&gt;&lt;P&gt;125&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 343100&lt;/P&gt;</description>
      <pubDate>Thu, 02 Feb 2017 11:10:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329364#M73680</guid>
      <dc:creator>scb</dc:creator>
      <dc:date>2017-02-02T11:10:07Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL QUERY</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329367#M73681</link>
      <description>&lt;P&gt;PROC SQL;&lt;BR /&gt;740 CREATE TABLE TEST1 AS SELECT DISTINCT&lt;BR /&gt;741 ID,&lt;BR /&gt;742 CASE WHEN PRODUCT NOT IN ('ABE') THEN COUNT(DISTINCT PRODUCT)-1 ELSE COUNT(DISTINCT&lt;BR /&gt;742! PRODUCT) END AS PRODUCTS,&lt;BR /&gt;743 SUM(AMT) AS AMT&lt;BR /&gt;744 FROM TEST&lt;BR /&gt;745 GROUP BY ID&lt;BR /&gt;746 HAVING PRODUCTS IN (SELECT MIN(PRODUCT) FROM TEST WHERE PRODUCT NOT IN 'ABE');&lt;BR /&gt;-----&lt;BR /&gt;22&lt;BR /&gt;76&lt;BR /&gt;ERROR 22-322: Syntax error, expecting one of the following: (, SELECT.&lt;/P&gt;&lt;P&gt;ERROR 76-322: Syntax error, statement will be ignored.&lt;/P&gt;&lt;P&gt;747 QUIT;&lt;BR /&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;BR /&gt;NOTE: PROCEDURE SQL used (Total process time):&lt;BR /&gt;real time 0.01 seconds&lt;BR /&gt;cpu time 0.01 seconds&lt;/P&gt;</description>
      <pubDate>Thu, 02 Feb 2017 11:11:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329367#M73681</guid>
      <dc:creator>scb</dc:creator>
      <dc:date>2017-02-02T11:11:53Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL QUERY</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329372#M73682</link>
      <description>&lt;P&gt;Thats not what you posted in your original question:&lt;/P&gt;
&lt;P&gt;"&lt;SPAN&gt;I only want the first record (min number in product) of every ID."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hence why I wasted my time coding it like that.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Its not clear to my the logic for product count, why does the last id have 0 when there are 2 products not ABE?&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;data test;
  input product $ id $ amt;
datalines;
ABC 123 10000
ABD 123 20000
ABE 123 40000
ABC 124 11300
ABD 124 21800
ABE 124 65600
ABC 125 111300
ABD 125 231800
;
run;

proc sql;
  create table WANT as
  select  ID,
          sum(case when PRODUCT="ABE" then 0 else 1 end)  as PRODUCT,
          sum(AMT) as AMT
  from    TEST
  group by ID;
quit;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Feb 2017 11:32:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-QUERY/m-p/329372#M73682</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-02-02T11:32:28Z</dc:date>
    </item>
  </channel>
</rss>

