<?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: Combining multiple DATA steps which have different WHERE statements on unique identifier in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523156#M142121</link>
    <description>&lt;P&gt;Your are sorted by UID, so you can merge subsets of variables (renamed) by id, as in:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data work.have;
	input UID :3. CRITERIA :$8. VARIABLE1 :$9. VARIABLE2 :$9. VARIABLE3 :$9. VARIABLE4 :$9. VARIABLE5 :$9. VARIABLE6 :$9. VARIABLE7 :$9. VARIABLE8 :$9.;
	infile datalines dlm=',';
	datalines;
1,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
1,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
1,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
1,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
1,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
2,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
2,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
2,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
2,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
2,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
3,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
3,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
3,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
3,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
3,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
4,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
4,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
4,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
4,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
4,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
5,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
5,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
5,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
5,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
5,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
;
run;



data want (drop=criteria);
  merge have (where=(criteria='A') 
              rename=(variable1=A_variable1 variable2=A_variable2 variable3=A_variable3 variable4=A_variable4  
                      variable5=A_variable5 variable6=A_variable6 variable7=A_variable7 variable8=A_variable8)  )
        have (where=(criteria='B') 
              rename=(variable1=B_variable1 variable2=B_variable2 variable3=B_variable3 variable4=B_variable4
                      variable5=B_variable5 variable6=B_variable6 variable7=B_variable7 variable8=B_variable8)  )
        have (where=(criteria='C') 
              rename=(variable1=C_variable1 variable2=C_variable2 variable3=C_variable3 variable4=C_variable4
                      variable5=C_variable5 variable6=C_variable6 variable7=C_variable7 variable8=C_variable8)  )
        have (where=(criteria='D') 
              rename=(variable1=D_variable1 variable2=D_variable2 variable3=D_variable3 variable4=D_variable4
                      variable5=D_variable5 variable6=D_variable6 variable7=D_variable7 variable8=D_variable8)  )
       ;
  by uid;
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And if the task of typing all those renames is a problem, then the PROC SQL access to dictionary.columns can help you write those renames directly from the meta-data for data set HAVE:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select distinct cats(name,'=A_',name),
                  cats(name,'=B_',name),
                  cats(name,'=C_',name),
                  cats(name,'=D_',name)
		 into :renamea separated by ' ',
              :renameb separated by ' ',
              :renamec separated by ' ',
              :renamed separated by ' '
		 from dictionary.columns
		 where libname='WORK' and memname='HAVE' and not upcase(name) in('UID','CRITERIA');
quit;

data want1 (drop=criteria);
  merge have (where=(criteria='A') rename=(&amp;amp;renamea))
        have (where=(criteria='B') rename=(&amp;amp;renameb))
        have (where=(criteria='C') rename=(&amp;amp;renamec))
        have (where=(criteria='D') rename=(&amp;amp;renamed));
  by uid;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 21 Dec 2018 19:55:20 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2018-12-21T19:55:20Z</dc:date>
    <item>
      <title>Combining multiple DATA steps which have different WHERE statements on unique identifier</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523038#M142064</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have some code which I think could be improved through combining multiple DATA steps into one.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Currently I generate multiple tables where I keep specific values (the actual dataset has a lot more variables) where a specific criteria is met. After I then join them all together with the PROC SQL function based on a unique identifier so they can then be joined with other tables.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below I've attached some sample data of how&amp;nbsp;it currently operates. Any help would be appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sandy&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data work.have;
	input UID :3. CRITERIA :$8. VARIABLE1 :$9. VARIABLE2 :$9. VARIABLE3 :$9. VARIABLE4 :$9. VARIABLE5 :$9. VARIABLE6 :$9. VARIABLE7 :$9. VARIABLE8 :$9.;
	infile datalines dlm=',';
	datalines;
1,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
1,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
1,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
1,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
1,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
2,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
2,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
2,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
2,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
2,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
3,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
3,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
3,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
3,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
3,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
4,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
4,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
4,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
4,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
4,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
5,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
5,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
5,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
5,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
5,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
;
run;

data work.data1;
	set work.have;
	keep UID VARIABLE1 VARIABLE2 VARIABLE3 VARIABLE4;
	where CRITERIA = 'A';
run;

data work.data2;
	set work.have;
	keep UID VARIABLE1 VARIABLE2 VARIABLE3 VARIABLE4;
	where CRITERIA = 'B';
run;

data work.data3;
	set work.have;
	keep UID VARIABLE1 VARIABLE2 VARIABLE3 VARIABLE4;
	where CRITERIA = 'C';
run;

data work.data4;
	set work.have;
	keep UID VARIABLE5 VARIABLE2 VARIABLE3;
	where CRITERIA = 'D';
run;

proc sql;
	create table work.want as 
		select t1.UID,
			t1.VARIABLE1 AS A_VAR1,
			t1.VARIABLE2 AS A_VAR2,
			t1.VARIABLE3 AS A_VAR3,
			t1.VARIABLE4 AS A_VAR4,
			t2.VARIABLE1 AS B_VAR1,
			t2.VARIABLE2 AS B_VAR2,
			t2.VARIABLE3 AS B_VAR3,
			t2.VARIABLE4 AS B_VAR4,
			t3.VARIABLE1 AS C_VAR1,
			t3.VARIABLE2 AS C_VAR2,
			t3.VARIABLE3 AS C_VAR3,
			t3.VARIABLE4 AS C_VAR4,
			t4.VARIABLE5 AS D_VAR5,
			t4.VARIABLE2 AS D_VAR2,
			t4.VARIABLE3 AS D_VAR3
		from work.data1 t1
			left join work.data2 t2 on (t2.UID=t1.UID)
			left join work.data3 t3 on (t3.UID=t1.UID)
			left join work.data4 t4 on (t4.UID=t1.UID);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 21 Dec 2018 11:46:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523038#M142064</guid>
      <dc:creator>Sanflo</dc:creator>
      <dc:date>2018-12-21T11:46:45Z</dc:date>
    </item>
    <item>
      <title>Re: Combining multiple DATA steps which have different WHERE statements on unique identifier</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523045#M142066</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=work.have(keep=UID CRITERIA VARIABLE1-VARIABLE5) out=result;
&amp;nbsp;by UID;
&amp;nbsp;where CRITERIA in ('A','B','C','D');
run;
data result;
&amp;nbsp;set result;
&amp;nbsp;by UID;
&amp;nbsp;retain&amp;nbsp;
&amp;nbsp;&amp;nbsp;A_VAR1-A_VAR4&amp;nbsp;
&amp;nbsp;&amp;nbsp;B_VAR1-B_VAR4&amp;nbsp;
&amp;nbsp;&amp;nbsp;C_VAR1-C_VAR4&amp;nbsp;
&amp;nbsp;&amp;nbsp;D_VAR5 D_VAR2 D_VAR3
&amp;nbsp;;
&amp;nbsp;array FromVar{*} VARIABLE1-VARIABLE5;
&amp;nbsp;array ToVar_A{*} $9 A_VAR1-A_VAR4;&amp;nbsp;
&amp;nbsp;array ToVar_B{*} $9 B_VAR1-B_VAR4;&amp;nbsp;
&amp;nbsp;array ToVar_C{*} $9 C_VAR1-C_VAR4;&amp;nbsp;
&amp;nbsp;array ToVar_D{*} $9 D_VAR5 D_VAR2 D_VAR3;&amp;nbsp;
&amp;nbsp;retain FLAG;
&amp;nbsp;if first.UID then do;
&amp;nbsp;&amp;nbsp;call missing(of ToVar_A{*});
&amp;nbsp;&amp;nbsp;call missing(of ToVar_B{*});
&amp;nbsp;&amp;nbsp;call missing(of ToVar_C{*});
&amp;nbsp;&amp;nbsp;call missing(of ToVar_D{*});
&amp;nbsp;&amp;nbsp;FLAG=0;
&amp;nbsp;end;
&amp;nbsp;select;
&amp;nbsp;&amp;nbsp;when(CRITERIA='A') do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;do i=1 to dim(ToVar_A);ToVar_A[i]=FromVar[i];end;
&amp;nbsp;&amp;nbsp;&amp;nbsp;FLAG=1;
&amp;nbsp;&amp;nbsp;end;
&amp;nbsp;&amp;nbsp;when(CRITERIA='B') do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;do i=1 to dim(ToVar_B);ToVar_B[i]=FromVar[i];end;
&amp;nbsp;&amp;nbsp;end;
&amp;nbsp;&amp;nbsp;when(CRITERIA='C') do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;do i=1 to dim(ToVar_C);ToVar_C[i]=FromVar[i];end;
&amp;nbsp;&amp;nbsp;end;
&amp;nbsp;&amp;nbsp;when(CRITERIA='D') do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;ToVar_D[1]=FromVar[5];
&amp;nbsp;&amp;nbsp;&amp;nbsp;do i=2 to dim(ToVar_D);ToVar_D[i]=FromVar[i];end;
&amp;nbsp;&amp;nbsp;end;
&amp;nbsp;&amp;nbsp;otherwise;
&amp;nbsp;end;
&amp;nbsp;if last.UID and FLAG;
&amp;nbsp;drop i FLAG CRITERIA VARIABLE1-VARIABLE5;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 21 Dec 2018 12:45:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523045#M142066</guid>
      <dc:creator>learsaas</dc:creator>
      <dc:date>2018-12-21T12:45:18Z</dc:date>
    </item>
    <item>
      <title>Re: Combining multiple DATA steps which have different WHERE statements on unique identifier</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523046#M142067</link>
      <description>&lt;P&gt;&lt;A title="refrence" href="https://communities.sas.com/t5/SAS-Programming/Row-to-variable/td-p/522615" target="_self"&gt;https://communities.sas.com/t5/SAS-Programming/Row-to-variable/td-p/522615&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Dec 2018 12:51:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523046#M142067</guid>
      <dc:creator>learsaas</dc:creator>
      <dc:date>2018-12-21T12:51:46Z</dc:date>
    </item>
    <item>
      <title>Re: Combining multiple DATA steps which have different WHERE statements on unique identifier</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523068#M142072</link>
      <description>&lt;P&gt;This revised version looks like a big improvement.&amp;nbsp; Did you have a question about it?&lt;/P&gt;</description>
      <pubDate>Fri, 21 Dec 2018 14:02:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523068#M142072</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-12-21T14:02:59Z</dc:date>
    </item>
    <item>
      <title>Re: Combining multiple DATA steps which have different WHERE statements on unique identifier</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523088#M142083</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/192107"&gt;@learsaas&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&lt;A title="refrence" href="https://communities.sas.com/t5/SAS-Programming/Row-to-variable/td-p/522615" target="_self"&gt;https://communities.sas.com/t5/SAS-Programming/Row-to-variable/td-p/522615&lt;/A&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Yup, still works as designed.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Essentially what&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/224277"&gt;@Sanflo&lt;/a&gt;&amp;nbsp;is doing is a transpose task. But their solution is&amp;nbsp;hard coded for the values so doesn't generalize still.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The solution posted, with the appropriate changes for the new data, still works.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="delete_transpose.PNG" style="width: 594px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/25846i5E2EFB603C8FDAE2/image-size/large?v=v2&amp;amp;px=999" role="button" title="delete_transpose.PNG" alt="delete_transpose.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Dec 2018 16:01:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523088#M142083</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-12-21T16:01:44Z</dc:date>
    </item>
    <item>
      <title>Re: Combining multiple DATA steps which have different WHERE statements on unique identifier</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523156#M142121</link>
      <description>&lt;P&gt;Your are sorted by UID, so you can merge subsets of variables (renamed) by id, as in:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data work.have;
	input UID :3. CRITERIA :$8. VARIABLE1 :$9. VARIABLE2 :$9. VARIABLE3 :$9. VARIABLE4 :$9. VARIABLE5 :$9. VARIABLE6 :$9. VARIABLE7 :$9. VARIABLE8 :$9.;
	infile datalines dlm=',';
	datalines;
1,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
1,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
1,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
1,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
1,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
2,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
2,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
2,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
2,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
2,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
3,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
3,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
3,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
3,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
3,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
4,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
4,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
4,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
4,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
4,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
5,A,AVALUE1,AVALUE2,AVALUE3,AVALUE4,AVALUE5,AVALUE6,AVALUE7,AVALUE8
5,B,BVALUE1,BVALUE2,BVALUE3,BVALUE4,BVALUE5,BVALUE6,BVALUE7,BVALUE8
5,C,CVALUE1,CVALUE2,CVALUE3,CVALUE4,CVALUE5,CVALUE6,CVALUE7,CVALUE8
5,D,DVALUE1,DVALUE2,DVALUE3,DVALUE4,DVALUE5,DVALUE6,DVALUE7,DVALUE8
5,E,EVALUE1,EVALUE2,EVALUE3,EVALUE4,EVALUE5,EVALUE6,EVALUE7,EVALUE8
;
run;



data want (drop=criteria);
  merge have (where=(criteria='A') 
              rename=(variable1=A_variable1 variable2=A_variable2 variable3=A_variable3 variable4=A_variable4  
                      variable5=A_variable5 variable6=A_variable6 variable7=A_variable7 variable8=A_variable8)  )
        have (where=(criteria='B') 
              rename=(variable1=B_variable1 variable2=B_variable2 variable3=B_variable3 variable4=B_variable4
                      variable5=B_variable5 variable6=B_variable6 variable7=B_variable7 variable8=B_variable8)  )
        have (where=(criteria='C') 
              rename=(variable1=C_variable1 variable2=C_variable2 variable3=C_variable3 variable4=C_variable4
                      variable5=C_variable5 variable6=C_variable6 variable7=C_variable7 variable8=C_variable8)  )
        have (where=(criteria='D') 
              rename=(variable1=D_variable1 variable2=D_variable2 variable3=D_variable3 variable4=D_variable4
                      variable5=D_variable5 variable6=D_variable6 variable7=D_variable7 variable8=D_variable8)  )
       ;
  by uid;
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And if the task of typing all those renames is a problem, then the PROC SQL access to dictionary.columns can help you write those renames directly from the meta-data for data set HAVE:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select distinct cats(name,'=A_',name),
                  cats(name,'=B_',name),
                  cats(name,'=C_',name),
                  cats(name,'=D_',name)
		 into :renamea separated by ' ',
              :renameb separated by ' ',
              :renamec separated by ' ',
              :renamed separated by ' '
		 from dictionary.columns
		 where libname='WORK' and memname='HAVE' and not upcase(name) in('UID','CRITERIA');
quit;

data want1 (drop=criteria);
  merge have (where=(criteria='A') rename=(&amp;amp;renamea))
        have (where=(criteria='B') rename=(&amp;amp;renameb))
        have (where=(criteria='C') rename=(&amp;amp;renamec))
        have (where=(criteria='D') rename=(&amp;amp;renamed));
  by uid;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 21 Dec 2018 19:55:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/523156#M142121</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-12-21T19:55:20Z</dc:date>
    </item>
    <item>
      <title>Re: Combining multiple DATA steps which have different WHERE statements on unique identifier</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/524463#M142631</link>
      <description>&lt;P&gt;Both of these solutions also work perfectly.&lt;/P&gt;</description>
      <pubDate>Fri, 04 Jan 2019 09:25:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combining-multiple-DATA-steps-which-have-different-WHERE/m-p/524463#M142631</guid>
      <dc:creator>Sanflo</dc:creator>
      <dc:date>2019-01-04T09:25:49Z</dc:date>
    </item>
  </channel>
</rss>

