<?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: Select Having Max in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116122#M32038</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think you need something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data tab1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;input cust dueDate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;informat dueDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;format dueDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;11111 1/20/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;22222 2/20/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;33333 1/12/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data tab2;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;input cust letterDate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;informat letterDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;format letterDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;11111 5/29/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;11111 8/10/2011&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;22222 4/28/2012&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;33333 8/19/2012&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc sql;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;create table lastLetter as&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;select &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.cust, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; letterDate, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dueDate, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intck("MONTH", letterDate, dueDate, "CONTINUOUS") as monthsToGo &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;from &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab1 as a inner join &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab2 as b on a.cust=b.cust&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;group by a.cust&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;having letterDate=max(letterDate) and dueDate &amp;gt; max(letterDate);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;quit;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc print noobs; run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MonthsToGo is optional...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 21 Jun 2013 22:26:19 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2013-06-21T22:26:19Z</dc:date>
    <item>
      <title>Select Having Max</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116120#M32036</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Everyone,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to select the max(letter_date) from each customer and compare it to the due_date.&amp;nbsp; For some reason the query return every row (not just the row with max letter_date).&amp;nbsp; I have included sample data and my query.&amp;nbsp; Any input would be greatly appreciated!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cust&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; letter_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; due_date&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #993300;"&gt;11111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-29-2013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-20-2013&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;11111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8-10-2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-20-2013&lt;/P&gt;&lt;P&gt;22222&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4-28-2012&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2-20-2013&lt;/P&gt;&lt;P&gt;33333&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8-19-2012&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-12-2013&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table redefault as&lt;/P&gt;&lt;P&gt;select distinct a.cust, b.letter_date, a.due_date&lt;/P&gt;&lt;P&gt;from&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab1 a&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; join tab2 b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on a.cust = b.cust&lt;/P&gt;&lt;P&gt;group by b.cust&lt;/P&gt;&lt;P&gt;having b.letter_date = max(b.letter_date) and&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #993300;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (max(b.letter_date) &amp;lt; a.due_date)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;order by a.cust&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;quit&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jun 2013 21:09:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116120#M32036</guid>
      <dc:creator>KevinC_</dc:creator>
      <dc:date>2013-06-21T21:09:13Z</dc:date>
    </item>
    <item>
      <title>Re: Select Having Max</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116121#M32037</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try this&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data y1;&lt;BR /&gt;input id&amp;nbsp; d1&amp;nbsp; d2;&lt;BR /&gt;informat d1 mmddyy10.;&lt;BR /&gt;informat d2 mmddyy10.;&lt;BR /&gt;format d1 mmddyy10.;&lt;BR /&gt;format d2 mmddyy10.;&lt;BR /&gt;cards;&lt;BR /&gt;11111 5/29/2013 1/20/2013&lt;BR /&gt;11111 8/10/2011 1/20/2013&lt;BR /&gt;22222 4/28/2012 2/20/2013&lt;BR /&gt;33333 8/19/2012 1/12/2013&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;create table y2 as&lt;BR /&gt;select id, max(d1), max(d2) &lt;BR /&gt;from y1&lt;BR /&gt;group by id&lt;BR /&gt;having max(d1)&amp;lt;max(d2);&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Later you can change the dates to mmddyy10. format.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps !!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thankz&lt;/P&gt;&lt;P&gt;Yesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jun 2013 21:32:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116121#M32037</guid>
      <dc:creator>yeshwanth</dc:creator>
      <dc:date>2013-06-21T21:32:20Z</dc:date>
    </item>
    <item>
      <title>Re: Select Having Max</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116122#M32038</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think you need something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data tab1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;input cust dueDate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;informat dueDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;format dueDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;11111 1/20/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;22222 2/20/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;33333 1/12/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data tab2;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;input cust letterDate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;informat letterDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;format letterDate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;11111 5/29/2013&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;11111 8/10/2011&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;22222 4/28/2012&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;33333 8/19/2012&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc sql;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;create table lastLetter as&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;select &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.cust, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; letterDate, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dueDate, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intck("MONTH", letterDate, dueDate, "CONTINUOUS") as monthsToGo &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;from &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab1 as a inner join &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab2 as b on a.cust=b.cust&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;group by a.cust&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;having letterDate=max(letterDate) and dueDate &amp;gt; max(letterDate);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;quit;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc print noobs; run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MonthsToGo is optional...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Jun 2013 22:26:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116122#M32038</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2013-06-21T22:26:19Z</dc:date>
    </item>
    <item>
      <title>Re: Select Having Max</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116123#M32039</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In your SQL code, you mentioned two datasets, but you only post one, where is another one ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data y1;
input id&amp;nbsp; d1&amp;nbsp; d2;
informat d1 mmddyy10.;
informat d2 mmddyy10.;
format d1 mmddyy10.;
format d2 mmddyy10.;
cards;
11111 5/29/2013 1/20/2013
11111 8/10/2011 1/20/2013
22222 4/28/2012 2/20/2013
33333 8/19/2012 1/12/2013
;
run;
proc sql;
 create table x as
&amp;nbsp; select *
&amp;nbsp;&amp;nbsp; from y1
&amp;nbsp;&amp;nbsp;&amp;nbsp; where d1 lt d2 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by id
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; having d1=max(d1);
quit;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Jun 2013 01:44:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Select-Having-Max/m-p/116123#M32039</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2013-06-22T01:44:46Z</dc:date>
    </item>
  </channel>
</rss>

