<?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: Help with PROC SQL conditional count in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809297#M319131</link>
    <description>&lt;PRE&gt;data have;
infile cards expandtabs truncover;
input Patient_ID Encounter_ID Index_date :date9. Encounter_date :date9. Encounter_type :$20. outpatient :$20.;
format Index_date Encounter_date :date9.;
datalines;
01	123	15JUN2020	01JAN2020	.	Yes
01	425	15JUN2020	02FEB2020	Telemedicine	No
01	376	15JUN2020	15MAR2020	.	Yes
01	974	15JUN2020	20MAY2020	.	No
01	173	15JUN2020	02OCT2020	.	Yes
02	298	02DEC2019	01SEP2019	Telemedicine	Yes
02	245	02DEC2019	30OCT2019	.	Yes
02	846	02DEC2019	01NOV2019	.	Yes
02	935	02DEC2019	11NOV2019	.	No
02	275	02DEC2019	02DEC2019	Telemedicine	No
;

proc sql;
select Patient_ID,
sum((intnx('month',index_date,-6,'s')&amp;lt;=encounter_date&amp;lt;=index_date) and
 (encounter_type='Telemedicine' or outpatient='Yes') ) as New_var
 from have
  group by Patient_ID ;
quit;&lt;/PRE&gt;</description>
    <pubDate>Fri, 22 Apr 2022 13:27:52 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2022-04-22T13:27:52Z</dc:date>
    <item>
      <title>Help with PROC SQL conditional count</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809277#M319117</link>
      <description>&lt;P&gt;Hello Community,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am working with some healthcare data and I would like to create a variable that indicates the total number of healthcare encounters per each patient in my dataset according to 2 conditions:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) encounter_type=’Telemedicine’ or outpatient=’Yes’&lt;/P&gt;&lt;P&gt;AND&lt;/P&gt;&lt;P&gt;2) intnx('month',index_date,-6,'s') &amp;lt;= encounter_date &amp;lt;= index_date;&lt;/P&gt;&lt;P&gt;Could anyone please help me with a Proc Sql code for doing this? I’ve provided below an example of my current dataset and my desired output. Any help with this would be greatly appreciated!&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data have;
input Prescription_date Encounter_ID Index_date Encounter_date Encounter_type outpatient;
datalines;
01	123	15JUN2020	01JAN2020	.	Yes
01	425	15JUN2020	02FEB2020	Telemedicine	No
01	376	15JUN2020	15MAR2020	.	Yes
01	974	15JUN2020	20MAY2020	.	No
01	173	15JUN2020	02OCT2020	.	Yes
02	298	02DEC2019	01SEP2019	Telemedicine	Yes
02	245	02DEC2019	30OCT2019	.	Yes
02	846	02DEC2019	01NOV2019	.	Yes
02	935	02DEC2019	11NOV2019	.	No
02	275	02DEC2019	02DEC2019	Telemedicine	No
;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Have:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patient_ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Encounter_ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Index_date&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Encounter_date&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Encounter_type&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;outpatient&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;123&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;15JUN2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01JAN2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;425&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;15JUN2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02FEB2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Telemedicine&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;376&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;15JUN2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;15MAR2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;974&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;15JUN2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;20MAY2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;173&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;15JUN2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02OCT2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;298&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02DEC2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01SEP2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Telemedicine&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;245&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02DEC2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30OCT2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;846&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02DEC2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01NOV2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;935&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02DEC2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;11NOV2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;275&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02DEC2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02DEC2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Telemedicine&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;No&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Want:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patient_ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;New_var&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 22 Apr 2022 12:34:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809277#M319117</guid>
      <dc:creator>cj3</dc:creator>
      <dc:date>2022-04-22T12:34:22Z</dc:date>
    </item>
    <item>
      <title>Re: Help with PROC SQL conditional count</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809297#M319131</link>
      <description>&lt;PRE&gt;data have;
infile cards expandtabs truncover;
input Patient_ID Encounter_ID Index_date :date9. Encounter_date :date9. Encounter_type :$20. outpatient :$20.;
format Index_date Encounter_date :date9.;
datalines;
01	123	15JUN2020	01JAN2020	.	Yes
01	425	15JUN2020	02FEB2020	Telemedicine	No
01	376	15JUN2020	15MAR2020	.	Yes
01	974	15JUN2020	20MAY2020	.	No
01	173	15JUN2020	02OCT2020	.	Yes
02	298	02DEC2019	01SEP2019	Telemedicine	Yes
02	245	02DEC2019	30OCT2019	.	Yes
02	846	02DEC2019	01NOV2019	.	Yes
02	935	02DEC2019	11NOV2019	.	No
02	275	02DEC2019	02DEC2019	Telemedicine	No
;

proc sql;
select Patient_ID,
sum((intnx('month',index_date,-6,'s')&amp;lt;=encounter_date&amp;lt;=index_date) and
 (encounter_type='Telemedicine' or outpatient='Yes') ) as New_var
 from have
  group by Patient_ID ;
quit;&lt;/PRE&gt;</description>
      <pubDate>Fri, 22 Apr 2022 13:27:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809297#M319131</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-04-22T13:27:52Z</dc:date>
    </item>
    <item>
      <title>Re: Help with PROC SQL conditional count</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809346#M319158</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;This is perfect, thank you!&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 15:55:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809346#M319158</guid>
      <dc:creator>cj3</dc:creator>
      <dc:date>2022-04-22T15:55:28Z</dc:date>
    </item>
    <item>
      <title>Re: Help with PROC SQL conditional counting</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809365#M319181</link>
      <description>&lt;P&gt;Why isn't the count for ID 1 three?&lt;/P&gt;
&lt;P&gt;For ID 1 I see one telemedicine and three outpatient encounters for a count of 4, but then the last one has an encounter date which isn't less than the index date.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Given a data step of&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	input patient_id encounter_id
	index_date:anydtdte12. encounter_date:anydtdte12.
	encounter_type:$20. outpatient:$3.;
	format index_date encounter_date date10.;
datalines;
1 123 15-Jun-20 1-Jan-20 M Yes
1 425 15-Jun-20 2-Feb-20 Telemedicine No
1 376 15-Jun-20 15-Mar-20 M Yes
1 974 15-Jun-20 20-May-20 M No
1 173 15-Jun-20 2-Oct-20 M Yes
2 298 2-Dec-19 1-Sep-19 Telemedicine Yes
2 245 2-Dec-19 30-Oct-19 M Yes
2 846 2-Dec-19 1-Nov-19 M Yes
2 935 2-Dec-19 11-Nov-19 M No
2 275 2-Dec-19 2-Dec-19 Telemedicine No
;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think SQL like&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
	select patient_id,
	sum(case 
		when encounter_type= "Telemedicine" or outpatient= "Yes"
		then 1 
		else 0
	end) as new_var
from have
where 
intnx('month',index_date,-6,'s') &amp;lt;= encounter_date &amp;lt;= index_date
group by patient_id;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;produces&lt;/P&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;TABLE class="table" cellspacing="0" cellpadding="0"&gt;&lt;COLGROUP&gt; &lt;COL class="data" /&gt; &lt;COL class="data" /&gt; &lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="header" scope="colgroup"&gt;patient_id&lt;/TH&gt;
&lt;TH class="header" scope="colgroup"&gt;new_var&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="b data"&gt;2&lt;/TD&gt;
&lt;TD class="b data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&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;</description>
      <pubDate>Fri, 22 Apr 2022 18:49:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809365#M319181</guid>
      <dc:creator>HB</dc:creator>
      <dc:date>2022-04-22T18:49:56Z</dc:date>
    </item>
    <item>
      <title>Re: Help with PROC SQL conditional counting</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809368#M319182</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/6401"&gt;@HB&lt;/a&gt;&amp;nbsp;the first entry for ID 1 has an encounter date more than 6 months before the index date. Therefore, the two dates for this observation are out of the specified range and would not count. Does this makes sense? I currently have the following code below. Do you think this is right?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;proc sql;
select Patient_ID,
sum((intnx('month',index_date,-6,'s')&amp;lt;=encounter_date&amp;lt;=index_date) and
 (encounter_type='Telemedicine' or outpatient='Yes') ) as New_var
 from have
  group by Patient_ID ;
quit;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 17:25:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-with-PROC-SQL-conditional-count/m-p/809368#M319182</guid>
      <dc:creator>cj3</dc:creator>
      <dc:date>2022-04-22T17:25:14Z</dc:date>
    </item>
  </channel>
</rss>

