<?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: PROC SQL in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL/m-p/859524#M339581</link>
    <description>&lt;P&gt;Only rename the variable once.&amp;nbsp; Probably easier if you use a DATA step instead of multiple SQL queries.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc contents data=library.elsa noprint out=contents; run;

data _null_;
  if eof then call execute('run; quit;');
  set contents end=eof;
  where lowcase(name) like 'r%sight';
  call execute('proc datasets lib=library nolist; modify elsa;');
  suffix=compress(name,,'kd');
  if find(name,'nsight ','i') then newname=cats('nsight',);
  else if find(name,'dsight ','i') then newname=cats('dsight',suffix);
  else newname=cats('sight',suffix);
  call execute(catx(' ','rename',catx('=',nliteral(name),nliteral(newname)),';');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you did want to use SQL then use the CASE to decide which name to generate, that way only one name will be picked for each variable.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;select 
  catx('=',nliteral(name)
      ,case
            when (lowcase(name) like 'r%nsight') then cats('nsight', compress(name,,'kd'))
            when (lowcase(name) like 'r%dsight') then cats('dsight', compress(name,,'kd'))
            else cats('sight', compress(name,,'kd'))
       end
      )
  into :rename_list separated by ' '
from sashelp.vcolumn
where libname='LIBRARY'
  and memname='ELSA'
  and lowcase(name) like 'r%sight'
;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 18 Feb 2023 15:12:09 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2023-02-18T15:12:09Z</dc:date>
    <item>
      <title>PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL/m-p/859508#M339573</link>
      <description>&lt;P&gt;How to solve the error?&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;select catt (name, '=', catt('nsight', compress(name, , 'kd'))) into : nsight_list separated by " "&lt;BR /&gt;from sashelp.vcolumn&lt;BR /&gt;where libname='LIBRARY' and memname='ELSA'&lt;BR /&gt;and name like 'r%nsight';&lt;/P&gt;&lt;P&gt;select catt (name, '=', catt('dsight', compress(name, , 'kd'))) into : dsight_list separated by " "&lt;BR /&gt;from sashelp.vcolumn&lt;BR /&gt;where libname='LIBRARY' and memname='ELSA'&lt;BR /&gt;and name like 'r%dsight';&lt;/P&gt;&lt;P&gt;select catt (name, '=', catt('sight', compress(name, , 'kd'))) into : sight_list separated by " "&lt;BR /&gt;from sashelp.vcolumn&lt;BR /&gt;where libname='LIBRARY' and memname='ELSA'&lt;BR /&gt;and name like 'r%sight';&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;proc datasets lib=LIBRARY;&lt;BR /&gt;modify ELSA;&lt;BR /&gt;rename &amp;amp;nsight_list. &amp;amp;dsight_list. &amp;amp;sight_list.;&lt;BR /&gt;run;quit;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="nwang5_0-1676692926710.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/80549i8087F136349100DA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="nwang5_0-1676692926710.png" alt="nwang5_0-1676692926710.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 18 Feb 2023 04:02:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL/m-p/859508#M339573</guid>
      <dc:creator>nwang5</dc:creator>
      <dc:date>2023-02-18T04:02:29Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL/m-p/859509#M339574</link>
      <description>&lt;P&gt;Your where clauses are not mutually exclusive.&lt;/P&gt;
&lt;P&gt;Your last selection &lt;EM&gt;where&lt;/EM&gt;&lt;SPAN&gt;&lt;EM&gt;&amp;nbsp;name like 'r%sight'&lt;/EM&gt; will also select variable names already selected by &lt;EM&gt;like 'r%dsight'&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This leads to a duplicated rename statement and though why Proc Datasets tells you with the 2nd attempt that the variable doesn't exist (as already renamed).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You could extend your last where clause to something like&amp;nbsp;&lt;EM&gt;where&lt;/EM&gt;&lt;SPAN&gt;&lt;EM&gt;&amp;nbsp;name like 'r%sight' and name not like 'r%nsight' and name not like 'r%dsight'&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alternatively code like below should also work.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select 
    case 
      when lowcase(name) like 'r%nsight' then catt(name, '=', catt('nsight', compress(name, , 'kd')))
      when lowcase(name) like 'r%dsight' then catt(name, '=', catt('dsight', compress(name, , 'kd')))
      else catt(name, '=', catt('sight', compress(name, , 'kd')))
    end
    into : rename_list separated by " "
  from sashelp.vcolumn
  where libname='LIBRARY' and memname='ELSA' and lowcase(name) like 'r%sight'
  ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 18 Feb 2023 04:52:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL/m-p/859509#M339574</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2023-02-18T04:52:20Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL/m-p/859524#M339581</link>
      <description>&lt;P&gt;Only rename the variable once.&amp;nbsp; Probably easier if you use a DATA step instead of multiple SQL queries.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc contents data=library.elsa noprint out=contents; run;

data _null_;
  if eof then call execute('run; quit;');
  set contents end=eof;
  where lowcase(name) like 'r%sight';
  call execute('proc datasets lib=library nolist; modify elsa;');
  suffix=compress(name,,'kd');
  if find(name,'nsight ','i') then newname=cats('nsight',);
  else if find(name,'dsight ','i') then newname=cats('dsight',suffix);
  else newname=cats('sight',suffix);
  call execute(catx(' ','rename',catx('=',nliteral(name),nliteral(newname)),';');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you did want to use SQL then use the CASE to decide which name to generate, that way only one name will be picked for each variable.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;select 
  catx('=',nliteral(name)
      ,case
            when (lowcase(name) like 'r%nsight') then cats('nsight', compress(name,,'kd'))
            when (lowcase(name) like 'r%dsight') then cats('dsight', compress(name,,'kd'))
            else cats('sight', compress(name,,'kd'))
       end
      )
  into :rename_list separated by ' '
from sashelp.vcolumn
where libname='LIBRARY'
  and memname='ELSA'
  and lowcase(name) like 'r%sight'
;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 18 Feb 2023 15:12:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL/m-p/859524#M339581</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-02-18T15:12:09Z</dc:date>
    </item>
  </channel>
</rss>

