<?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: How do I get proc SQL to select minimum date even when minimum date is missing. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842712#M333218</link>
    <description>&lt;P&gt;Read your source data in a way so the datetime string gets converted to a SAS datetime value.&lt;/P&gt;
&lt;P&gt;The SAS min() function excludes missings.&lt;/P&gt;
&lt;P&gt;Below one possible approach.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile datalines truncover;
  input subject $1-3 @4 dtc :e8601dt19.;
  format dtc datetime20.;
  cards;
123  2014-01-15T00:00
123 
123  2014-01-17T00:00:00
124  2014-01-15T00:00:00
124  2014-01-15T00:00:00
124  2014-01-17T00:00:00
;

proc sort data=have out=inter;
  where subject ne ' ';
  by subject dtc;
run;

data want;
  set inter;
  by subject;
  if first.subject;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sun, 06 Nov 2022 08:34:26 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2022-11-06T08:34:26Z</dc:date>
    <item>
      <title>How do I get proc SQL to select minimum date even when minimum date is missing.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842711#M333217</link>
      <description>&lt;P&gt;In the data below I would like proc sql to select the minimum date for subject 123 as the missing date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data visit;&lt;/P&gt;&lt;P&gt;input subject $1-3&amp;nbsp; dtc $4-24 ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;123&amp;nbsp; &lt;SPAN&gt;2014-01-15&lt;/SPAN&gt;T00:00&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;123&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;123&amp;nbsp; 2014-01-17&lt;/SPAN&gt;&lt;SPAN&gt;T00:00:00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;124&amp;nbsp; 2014-01-15T00:00:00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;124&amp;nbsp; 2014-01-15T00:00:00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;124&amp;nbsp; 2014-01-17T00:00:00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table want. as&lt;BR /&gt;select distinct subject, min(dtc) as mindt format = date9.&lt;BR /&gt;from have&lt;BR /&gt;where subject ne ''&lt;BR /&gt;group by subject;&lt;BR /&gt;quit;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Nov 2022 07:34:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842711#M333217</guid>
      <dc:creator>inason</dc:creator>
      <dc:date>2022-11-06T07:34:31Z</dc:date>
    </item>
    <item>
      <title>Re: How do I get proc SQL to select minimum date even when minimum date is missing.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842712#M333218</link>
      <description>&lt;P&gt;Read your source data in a way so the datetime string gets converted to a SAS datetime value.&lt;/P&gt;
&lt;P&gt;The SAS min() function excludes missings.&lt;/P&gt;
&lt;P&gt;Below one possible approach.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile datalines truncover;
  input subject $1-3 @4 dtc :e8601dt19.;
  format dtc datetime20.;
  cards;
123  2014-01-15T00:00
123 
123  2014-01-17T00:00:00
124  2014-01-15T00:00:00
124  2014-01-15T00:00:00
124  2014-01-17T00:00:00
;

proc sort data=have out=inter;
  where subject ne ' ';
  by subject dtc;
run;

data want;
  set inter;
  by subject;
  if first.subject;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Nov 2022 08:34:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842712#M333218</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2022-11-06T08:34:26Z</dc:date>
    </item>
    <item>
      <title>Re: How do I get proc SQL to select minimum date even when minimum date is missing.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842716#M333219</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile datalines truncover;
  input subject $1-3 @4 dtc :e8601dt19.;
  format dtc datetime20.;
  cards;
123  2014-01-15T00:00
123 
123  2014-01-17T00:00:00
124  2014-01-15T00:00:00
124  2014-01-15T00:00:00
124  2014-01-17T00:00:00
;

proc sql;
create table want as
select distinct subject, dtc as mindt format = dtdate9.
from have
group by subject
having coalesce(dtc,-9999999)=min(coalesce(dtc,-9999999))
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 06 Nov 2022 09:44:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842716#M333219</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-11-06T09:44:09Z</dc:date>
    </item>
    <item>
      <title>Re: How do I get proc SQL to select minimum date even when minimum date is missing.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842720#M333221</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/280135"&gt;@inason&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want MINDT to be a SAS &lt;EM&gt;date&lt;/EM&gt; value (as suggested by your &lt;FONT face="courier new,courier"&gt;format = date9.&lt;/FONT&gt; specification), you can use a CASE expression:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table want as
select subject, case when nmiss(dtc) then . else min(input(dtc,yymmdd10.)) end as mindt format=date9.
from visit
where subject ne ' '
group by subject;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Edit: Or, a bit shorter, replace the above CASE expression by an&amp;nbsp;&lt;A href="https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lefunctionsref/n0l3n5z2h31h7wn1fmnqd33ibhap.htm" target="_blank" rel="noopener"&gt;IFN function&lt;/A&gt; call:&lt;/P&gt;
&lt;PRE&gt;ifn(nmiss(dtc),.,min(input(dtc,yymmdd10.)))&lt;/PRE&gt;</description>
      <pubDate>Sun, 06 Nov 2022 11:26:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-get-proc-SQL-to-select-minimum-date-even-when-minimum/m-p/842720#M333221</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2022-11-06T11:26:40Z</dc:date>
    </item>
  </channel>
</rss>

