<?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 INTO Clause when CASE in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527637#M143894</link>
    <description>&lt;P&gt;Thank you very much for solution .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am trying to get result as pet below to pass the same values in LENGTH statement .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;i have tried below code , however for NUM variable&amp;nbsp; how i cam get space like " NUM 8. "&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

proc sql noprint;
    create table tt as 
       select NAME,length,
			case when upcase(type) ='CHAR' then '$' 
			     else '.'			
			end as var_type 
			into: varlist separated by ' ' ,
	                    : var_len separated by ',',
		            : var_type separated by ' ' from dictionary.COLUMNS 
           	      where upcase(libname) = 'SASHELP' and upcase(MEMNAME) = upcase("CLASS")   ;

				  
	   select case when var_type='$' then cats('',name,var_type,length,'.')
	               when var_type='.' then cats(' ',name,length,var_type)
                 else ' '
                   end as var_all 
				   into:var_all separated by ' '
				   from tt ;

     quit;
     
     %put &amp;amp;=var_all;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;In log shows&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;%put &amp;amp;=var_all;&lt;BR /&gt;VAR_ALL=Name$8. Sex$1. Age8. Height8. Weight8.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But i want numeric variable length as&amp;nbsp; "Age 8. Height 8. Weight 8. "&lt;/P&gt;</description>
    <pubDate>Wed, 16 Jan 2019 05:09:20 GMT</pubDate>
    <dc:creator>RajasekharReddy</dc:creator>
    <dc:date>2019-01-16T05:09:20Z</dc:date>
    <item>
      <title>PROC SQL INTO Clause when CASE</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527611#M143870</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please help me tog generate macro variable values as&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Varlist as variable names,&lt;/P&gt;
&lt;P&gt;var_type as variable type (char= $ num='')&lt;/P&gt;
&lt;P&gt;length as variable length&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	create table  test as
       select NAME,length,
			case when upcase(type) ='CHAR' then '$' 
			     when upcase(type) ='NUM' then ''
			else '' 
			end as var_type 
			into: varlist separated by ' ' ,
	                    : var_len separated by ',',
		            : var_type separated by ' ' from dictionary.COLUMNS 
           	      where upcase(libname) = 'OFFLINE' and upcase(MEMNAME) = upcase("LIS002") 
	   order by varnum  ;
     quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 16 Jan 2019 03:12:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527611#M143870</guid>
      <dc:creator>RajasekharReddy</dc:creator>
      <dc:date>2019-01-16T03:12:16Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL INTO Clause when CASE</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527617#M143875</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;

       select NAME,length,
			case when upcase(type) ='CHAR' then '$' 
			     else ' '			
			end as var_type 
			into: varlist separated by ' ' ,
	                    : var_len separated by ',',
		            : var_type separated by ' ' from dictionary.COLUMNS 
           	      where upcase(libname) = 'SASHELP' and upcase(MEMNAME) = upcase("CLASS")   ;
     quit;
     
     %put &amp;amp;=var_type &amp;amp;=var_len &amp;amp;=varlist;
 
  &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 16 Jan 2019 03:24:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527617#M143875</guid>
      <dc:creator>r_behata</dc:creator>
      <dc:date>2019-01-16T03:24:26Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL INTO Clause when CASE</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527619#M143877</link>
      <description>&lt;P&gt;What is the question here?&lt;/P&gt;
&lt;P&gt;What are you trying to do?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you want SQL to create a table or macro variables?&amp;nbsp; It can't do both in the same query.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
select varnum
     , name
     , case when type ='char' then cats('$',length) else cats(length) end
  into :dummy
     , :name_list separated by ' '
     , :length_list separated by ' '
  from dictionary.columns
  where libname = 'OFFLINE' and memname = %upcase("LIS002") 
  order by varnum  
;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jan 2019 03:39:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527619#M143877</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-01-16T03:39:00Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL INTO Clause when CASE</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527622#M143880</link>
      <description>&lt;P&gt;Remove the &lt;STRONG&gt;create table test as&lt;/STRONG&gt;&amp;nbsp;line&amp;nbsp; -&amp;nbsp;that is causing the INTO to be ignored&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jan 2019 03:42:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527622#M143880</guid>
      <dc:creator>34reqrwe</dc:creator>
      <dc:date>2019-01-16T03:42:49Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL INTO Clause when CASE</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527637#M143894</link>
      <description>&lt;P&gt;Thank you very much for solution .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am trying to get result as pet below to pass the same values in LENGTH statement .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;i have tried below code , however for NUM variable&amp;nbsp; how i cam get space like " NUM 8. "&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

proc sql noprint;
    create table tt as 
       select NAME,length,
			case when upcase(type) ='CHAR' then '$' 
			     else '.'			
			end as var_type 
			into: varlist separated by ' ' ,
	                    : var_len separated by ',',
		            : var_type separated by ' ' from dictionary.COLUMNS 
           	      where upcase(libname) = 'SASHELP' and upcase(MEMNAME) = upcase("CLASS")   ;

				  
	   select case when var_type='$' then cats('',name,var_type,length,'.')
	               when var_type='.' then cats(' ',name,length,var_type)
                 else ' '
                   end as var_all 
				   into:var_all separated by ' '
				   from tt ;

     quit;
     
     %put &amp;amp;=var_all;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;In log shows&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;%put &amp;amp;=var_all;&lt;BR /&gt;VAR_ALL=Name$8. Sex$1. Age8. Height8. Weight8.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But i want numeric variable length as&amp;nbsp; "Age 8. Height 8. Weight 8. "&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jan 2019 05:09:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527637#M143894</guid>
      <dc:creator>RajasekharReddy</dc:creator>
      <dc:date>2019-01-16T05:09:20Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL INTO Clause when CASE</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527638#M143895</link>
      <description>&lt;DIV id="messagebodydisplay_0_3" class="lia-message-body lia-component-body"&gt;
&lt;DIV class="lia-message-body-content"&gt;
&lt;P&gt;Thank you very much for solution .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am trying to get result for macro variable as per below to pass the same values in LENGTH statement .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;%put &amp;amp;=var_all;&lt;BR /&gt;VAR_ALL= Name$8. Sex$1. &lt;FONT color="#FFFF00"&gt;&lt;FONT color="#FF6600"&gt;Age 8. Height 8. Weight 8.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;i have tried below code , however for NUM variable&amp;nbsp; how i can get space like " NUM&lt;FONT color="#FF6600"&gt; 8.&lt;/FONT&gt; "&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;

&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sql&lt;/SPAN&gt; noprint&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    create &lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt; tt as 
       &lt;SPAN class="token statement"&gt;select&lt;/SPAN&gt; NAME&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;length&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;
			case when &lt;SPAN class="token function"&gt;upcase&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;type&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'CHAR'&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'$'&lt;/SPAN&gt; 
			     &lt;SPAN class="token keyword"&gt;else&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'.'&lt;/SPAN&gt;			
			end as var_type 
			&lt;SPAN class="token keyword"&gt;into&lt;/SPAN&gt;: varlist separated &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;' '&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;
	                    : var_len separated &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;','&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;
		            : var_type separated &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;' '&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; dictionary&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;COLUMNS&lt;/SPAN&gt; 
           	      &lt;SPAN class="token statement"&gt;where&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;upcase&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;libname&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'SASHELP'&lt;/SPAN&gt; and &lt;SPAN class="token function"&gt;upcase&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;MEMNAME&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;upcase&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"CLASS"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;   &lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

				  
	   &lt;SPAN class="token statement"&gt;select&lt;/SPAN&gt; case when var_type&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'$'&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;cats&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;''&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;name&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;var_type&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;length&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'.'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;
	               when var_type&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'.'&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;cats&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;' '&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;name&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;length&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;var_type&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;
                 &lt;SPAN class="token keyword"&gt;else&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;' '&lt;/SPAN&gt;
                   end as var_all 
				   &lt;SPAN class="token keyword"&gt;into&lt;/SPAN&gt;:var_all separated &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;' '&lt;/SPAN&gt;
				   &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; tt &lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

     &lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
     
     &lt;SPAN class="token macrostatement"&gt;%put&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;var_all&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;In log shows&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;%put &amp;amp;=var_all;&lt;BR /&gt;VAR_ALL=Name$8. Sex$1. Age8. Height8. Weight8.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But i want numeric variable length as&amp;nbsp; "Age 8. Height 8. Weight 8. "&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Wed, 16 Jan 2019 05:32:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527638#M143895</guid>
      <dc:creator>RajasekharReddy</dc:creator>
      <dc:date>2019-01-16T05:32:11Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL INTO Clause when CASE</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527725#M143934</link>
      <description>&lt;P&gt;You don't want the periods if you are trying to generate values for a LENGTH statement.&amp;nbsp; Lengths can only be integers so there is no need for a decimal place.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Use the CATX() function to place a delimiter between values.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;...
catx(' ',name,case when type='char' then '$' end,length)
...
into :varlist separated by ' '&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;That will generate&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;NAME $ 10 AGE 8 &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Or you could get rid for the space after the $&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;catx(' ',name,case when type='char' then cats('$',length) else cats(length) end)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jan 2019 14:58:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-INTO-Clause-when-CASE/m-p/527725#M143934</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-01-16T14:58:14Z</dc:date>
    </item>
  </channel>
</rss>

