<?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: Dynamic SQL Case When in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920879#M362695</link>
    <description>&lt;DIV&gt;&lt;PRE&gt;%let records_flow_id_value=5;
%let flow_value1=column1;
%let flow_value2=column2;
%let flow_value3=column3;
%let flow_value4=column4;
%let flow_value5=column5;


options mprint;
%macro Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=);
,case when
&amp;nbsp; &amp;nbsp; %do i = 1 %to &amp;amp;nos_iteration.;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;i.)&amp;gt;0 then 1 else 0 end)+
&amp;nbsp; &amp;nbsp; %end;
0=0 then "-99"
&amp;nbsp; &amp;nbsp; when
&amp;nbsp; &amp;nbsp; %do j = 1 %to &amp;amp;nos_iteration.;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;j.)&amp;gt;0 then 1 else 0 end)+
&amp;nbsp; &amp;nbsp; %end;
0&amp;gt;=1 and lengthN(&amp;amp;ColumnName.)=0 then "-999" else &amp;amp;ColumnName.
%mend Assign_99_999;

data class;
set sashelp.class;
if age = 12 then column1 ="YES"; else column1="NO";
if age = 13 then column2 ="YES"; else column2="NO";
if age = 14 then column3 ="YES"; else column3="NO";
if age = 15 then column4 ="YES"; else column4="NO";
if age = 16 then column5 ="YES"; else column5="NO";
run;
options mprint;

proc sql;
create table _temp_ as&amp;nbsp;
select&amp;nbsp;
&amp;nbsp; &amp;nbsp; name
&amp;nbsp; &amp;nbsp; ,age
&amp;nbsp; &amp;nbsp; %Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=Column1) end as Column1
from class
;quit;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;Is this what you are looking for?&lt;/P&gt;</description>
    <pubDate>Tue, 19 Mar 2024 06:59:04 GMT</pubDate>
    <dc:creator>Mazi</dc:creator>
    <dc:date>2024-03-19T06:59:04Z</dc:date>
    <item>
      <title>Dynamic SQL Case When</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920841#M362679</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the below code.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As you see when I invoke the macro it invokes properly with the correct syntax. However When I invoke the macro in the SQL query it throws me error.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;%let records_flow_id_value=5;
%let flow_value1=column1;
%let flow_value2=column2;
%let flow_value3=column3;
%let flow_value4=column4;
%let flow_value5=column5;

%macro Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=);

    %do i = 1 %to &amp;amp;nos_iteration.;
        %if &amp;amp;i. = 1 %then %do;
        %put when;
        %end;
        %put sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;i.)&amp;gt;0 then 1 else 0 end)+;
        %if &amp;amp;i. = &amp;amp;nos_iteration. %then %do;
        %put 0=0 then "-99" when;
        %end;
    %end;
    
    %do j = 1 %to &amp;amp;nos_iteration.;
        %put sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;j.)&amp;gt;0 then 1 else 0 end)+;
        %if &amp;amp;j. = &amp;amp;nos_iteration. %then %do;
        %put 0&amp;gt;=1 and lengthN(&amp;amp;ColumnName.)=0 then "-999" else &amp;amp;ColumnName.;
        %end;
    %end;

%mend Assign_99_999;
%Assign_99_999(ColumnName=Column1);

data class;
set sashelp.class;
if age = 12 then column1 ="YES"; else column1="NO";
if age = 13 then column2 ="YES"; else column2="NO";
if age = 14 then column3 ="YES"; else column3="NO";
if age = 15 then column4 ="YES"; else column4="NO";
if age = 16 then column5 ="YES"; else column5="NO";
run;

proc sql;
create table _temp_ as 
select 
    name
    ,age
    ,case %Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=Column1) end as Column1
from class
;quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the log:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;PRE&gt;1                                                          The SAS System                               13:11 Monday, March 18, 2024

1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          %LET _CLIENTTASKLABEL='Program';
4          %LET _CLIENTPROCESSFLOWNAME='Standalone Not In Project';
5          %LET _CLIENTPROJECTPATH='';
6          %LET _CLIENTPROJECTPATHHOST='';
7          %LET _CLIENTPROJECTNAME='';
8          %LET _SASPROGRAMFILE='';
9          %LET _SASPROGRAMFILEHOST='';
10         
11         ODS _ALL_ CLOSE;
12         OPTIONS DEV=SVG;
13         GOPTIONS XPIXELS=0 YPIXELS=0;
14         %macro HTML5AccessibleGraphSupported;
15             %if %_SAS_VERCOMP_FV(9,4,4, 0,0,0) &amp;gt;= 0 %then ACCESSIBLE_GRAPH;
16         %mend;
17         FILENAME EGHTML TEMP;
18         ODS HTML5(ID=EGHTML) FILE=EGHTML
19             OPTIONS(BITMAP_MODE='INLINE')
20             %HTML5AccessibleGraphSupported
SYMBOLGEN:  Macro variable SYSVLONG resolves to 9.04.01M7P080620
SYMBOLGEN:  Macro variable CURMAJ resolves to 9
SYMBOLGEN:  Macro variable FMAJOR resolves to 9
SYMBOLGEN:  Macro variable FMINOR resolves to 4
SYMBOLGEN:  Macro variable FMAINT resolves to 4
SYMBOLGEN:  Macro variable SYSVLONG resolves to 9.04.01M7P080620
SYMBOLGEN:  Macro variable SYSVLONG resolves to 9.04.01M7P080620
SYMBOLGEN:  Macro variable MAJOR resolves to 9
SYMBOLGEN:  Macro variable CURMAJ resolves to 9
SYMBOLGEN:  Macro variable MINOR resolves to 4
SYMBOLGEN:  Macro variable CURMIN resolves to 04
SYMBOLGEN:  Macro variable MAINT resolves to 4
SYMBOLGEN:  Macro variable CURMNT resolves to 7
SYMBOLGEN:  Macro variable MAINT resolves to 4
MPRINT(HTML5ACCESSIBLEGRAPHSUPPORTED):   ACCESSIBLE_GRAPH
21             ENCODING='utf-8'
22             STYLE=HtmlBlue
23             NOGTITLE
24             NOGFOOTNOTE
25             GPATH=&amp;amp;sasworklocation
SYMBOLGEN:  Macro variable SASWORKLOCATION resolves to 
            "/gpfs/FS1/saswork/SAS_work42220001BBA8_nzxpap1149.nndc.kp.org/SAS_workB78D0001BBA8_nzxpap1149.nndc.kp.org/"
26         ;
NOTE: Writing HTML5(EGHTML) Body file: EGHTML
27         
28         %let records_flow_id_value=5;
29         %let flow_value1=column1;
30         %let flow_value2=column2;
31         %let flow_value3=column3;
32         %let flow_value4=column4;
33         %let flow_value5=column5;
34         
35         %macro Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=);
36         
37             %do i = 1 %to &amp;amp;nos_iteration.;
38                 %if &amp;amp;i. = 1 %then %do;
39                 %put when;
40                 %end;
2                                                          The SAS System                               13:11 Monday, March 18, 2024

41                 %put sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;i.)&amp;gt;0 then 1 else 0 end)+;
42                 %if &amp;amp;i. = &amp;amp;nos_iteration. %then %do;
43                 %put 0=0 then "-99" when;
44                 %end;
45             %end;
46         
47             %do j = 1 %to &amp;amp;nos_iteration.;
48                 %put sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;j.)&amp;gt;0 then 1 else 0 end)+;
49                 %if &amp;amp;j. = &amp;amp;nos_iteration. %then %do;
50                 %put 0&amp;gt;=1 and lengthN(&amp;amp;ColumnName.)=0 then "-999" else &amp;amp;ColumnName.;
51                 %end;
52             %end;
53         
54         %mend Assign_99_999;
55         %Assign_99_999(ColumnName=Column1);
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  Macro variable I resolves to 1
when
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 1
SYMBOLGEN:  Macro variable FLOW_VALUE1 resolves to column1
sum(case when lengthN(column1)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 1
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  Macro variable I resolves to 2
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 2
SYMBOLGEN:  Macro variable FLOW_VALUE2 resolves to column2
sum(case when lengthN(column2)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 2
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  Macro variable I resolves to 3
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 3
SYMBOLGEN:  Macro variable FLOW_VALUE3 resolves to column3
sum(case when lengthN(column3)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 3
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  Macro variable I resolves to 4
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 4
SYMBOLGEN:  Macro variable FLOW_VALUE4 resolves to column4
sum(case when lengthN(column4)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 4
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  Macro variable I resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 5
SYMBOLGEN:  Macro variable FLOW_VALUE5 resolves to column5
sum(case when lengthN(column5)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 5
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
3                                                          The SAS System                               13:11 Monday, March 18, 2024

0=0 then "-99" when
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 1
SYMBOLGEN:  Macro variable FLOW_VALUE1 resolves to column1
sum(case when lengthN(column1)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 1
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 2
SYMBOLGEN:  Macro variable FLOW_VALUE2 resolves to column2
sum(case when lengthN(column2)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 2
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 3
SYMBOLGEN:  Macro variable FLOW_VALUE3 resolves to column3
sum(case when lengthN(column3)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 3
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 4
SYMBOLGEN:  Macro variable FLOW_VALUE4 resolves to column4
sum(case when lengthN(column4)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 4
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 5
SYMBOLGEN:  Macro variable FLOW_VALUE5 resolves to column5
sum(case when lengthN(column5)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 5
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to &amp;amp;records_flow_id_value.
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  Macro variable COLUMNNAME resolves to Column1
SYMBOLGEN:  Macro variable COLUMNNAME resolves to Column1
0&amp;gt;=1 and lengthN(Column1)=0 then "-999" else Column1
56         


57         data class;
58         set sashelp.class;
59         if age = 12 then column1 ="YES"; else column1="NO";
60         if age = 13 then column2 ="YES"; else column2="NO";
61         if age = 14 then column3 ="YES"; else column3="NO";
62         if age = 15 then column4 ="YES"; else column4="NO";
63         if age = 16 then column5 ="YES"; else column5="NO";
64         run;

NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.CLASS has 19 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      user cpu time       0.00 seconds
4                                                          The SAS System                               13:11 Monday, March 18, 2024

      system cpu time     0.00 seconds
      memory              729.00k
      OS Memory           20124.00k
      Timestamp           03/18/2024 02:23:51 PM
      Step Count                        21  Switch Count  2
      Page Faults                       0
      Page Reclaims                     52
      Page Swaps                        0
      Voluntary Context Switches        49
      Involuntary Context Switches      0
      Block Input Operations            0
      Block Output Operations           0
      

65         options mprint symbolgen;
66         proc sql;
67         create table _temp_ as
68         select
69             name
70             ,age
71             ,case %Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=Column1) end as Column1
SYMBOLGEN:  Macro variable RECORDS_FLOW_ID_VALUE resolves to 5
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  Macro variable I resolves to 1
when
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 1
SYMBOLGEN:  Macro variable FLOW_VALUE1 resolves to column1
sum(case when lengthN(column1)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 1
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  Macro variable I resolves to 2
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 2
SYMBOLGEN:  Macro variable FLOW_VALUE2 resolves to column2
sum(case when lengthN(column2)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 2
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  Macro variable I resolves to 3
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 3
SYMBOLGEN:  Macro variable FLOW_VALUE3 resolves to column3
sum(case when lengthN(column3)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 3
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  Macro variable I resolves to 4
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 4
SYMBOLGEN:  Macro variable FLOW_VALUE4 resolves to column4
sum(case when lengthN(column4)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 4
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  Macro variable I resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable I resolves to 5
SYMBOLGEN:  Macro variable FLOW_VALUE5 resolves to column5
sum(case when lengthN(column5)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable I resolves to 5
5                                                          The SAS System                               13:11 Monday, March 18, 2024

SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
0=0 then "-99" when
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 1
SYMBOLGEN:  Macro variable FLOW_VALUE1 resolves to column1
sum(case when lengthN(column1)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 1
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 2
SYMBOLGEN:  Macro variable FLOW_VALUE2 resolves to column2
sum(case when lengthN(column2)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 2
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 3
SYMBOLGEN:  Macro variable FLOW_VALUE3 resolves to column3
sum(case when lengthN(column3)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 3
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 4
SYMBOLGEN:  Macro variable FLOW_VALUE4 resolves to column4
sum(case when lengthN(column4)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 4
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  &amp;amp;&amp;amp; resolves to &amp;amp;.
SYMBOLGEN:  Macro variable J resolves to 5
SYMBOLGEN:  Macro variable FLOW_VALUE5 resolves to column5
sum(case when lengthN(column5)&amp;gt;0 then 1 else 0 end)+
SYMBOLGEN:  Macro variable J resolves to 5
SYMBOLGEN:  Macro variable NOS_ITERATION resolves to 5
SYMBOLGEN:  Macro variable COLUMNNAME resolves to Column1
SYMBOLGEN:  Macro variable COLUMNNAME resolves to Column1
0&amp;gt;=1 and lengthN(Column1)=0 then "-999" else Column1
71             ,case %Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=Column1) end as Column1
                                                                                                   __
                                                                                                   22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &amp;amp;, (, *, **, +, -, '.', /, &amp;lt;, &amp;lt;=, &amp;lt;&amp;gt;, =, &amp;gt;, &amp;gt;=, ?, AND, BETWEEN, 
              CONTAINS, EQ, EQT, GE, GET, GT, GTT, IN, IS, LE, LET, LIKE, LT, LTT, NE, NET, NOT, NOTIN, OR, WHEN, ^, ^=, |, ||, ~, 
              ~=.  

71             ,case %Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=Column1) end as Column1
                                                                                                   __
                                                                                                   76
ERROR 76-322: Syntax error, statement will be ignored.

72         from class
73         ;
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
73       !  quit;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.18 seconds
      user cpu time       0.01 seconds
      system cpu time     0.01 seconds
      memory              244.65k
6                                                          The SAS System                               13:11 Monday, March 18, 2024

      OS Memory           20124.00k
      Timestamp           03/18/2024 02:23:51 PM
      Step Count                        22  Switch Count  0
      Page Faults                       0
      Page Reclaims                     11
      Page Swaps                        0
      Voluntary Context Switches        101
      Involuntary Context Switches      0
      Block Input Operations            0
      Block Output Operations           0
      
74         
75         %LET _CLIENTTASKLABEL=;
76         %LET _CLIENTPROCESSFLOWNAME=;
77         %LET _CLIENTPROJECTPATH=;
78         %LET _CLIENTPROJECTPATHHOST=;
79         %LET _CLIENTPROJECTNAME=;
80         %LET _SASPROGRAMFILE=;
81         %LET _SASPROGRAMFILEHOST=;
82         
83         ;*';*";*/;quit;run;
84         ODS _ALL_ CLOSE;
85         
86         
87         QUIT; RUN;
88         &lt;/PRE&gt;</description>
      <pubDate>Mon, 18 Mar 2024 21:26:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920841#M362679</guid>
      <dc:creator>david27</dc:creator>
      <dc:date>2024-03-18T21:26:36Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic SQL Case When</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920842#M362680</link>
      <description>&lt;P&gt;Please don't tell us you get an error and then not provide the log with the error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please show us the entire log. Since this is a macro issue, please turn on the macro debugging options by running this line of code, then run the rest of your code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;options mprint symbolgen;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Copy the log as text and paste it into the window that appears when you click on the &amp;lt;/&amp;gt; icon&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PaigeMiller_0-1699900743276.png" style="width: 859px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/89703i797B759183DE7484/image-size/large?v=v2&amp;amp;px=999" role="button" title="PaigeMiller_0-1699900743276.png" alt="PaigeMiller_0-1699900743276.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Mar 2024 21:21:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920842#M362680</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2024-03-18T21:21:07Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic SQL Case When</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920843#M362681</link>
      <description>&lt;P&gt;Added the log.&lt;/P&gt;</description>
      <pubDate>Mon, 18 Mar 2024 21:27:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920843#M362681</guid>
      <dc:creator>david27</dc:creator>
      <dc:date>2024-03-18T21:27:36Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic SQL Case When</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920846#M362683</link>
      <description>&lt;P&gt;This is not a macro error, although your use of macros makes it more complicated to see. Your code&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table _temp_ as 
select 
    name
    ,age
    ,case %Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=Column1) end as Column1
from class
;quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;resolves to&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table _temp_ as 
select 
    name
    ,age
    ,case 0&amp;gt;=1 and lengthN(Column1)=0 then "-999" else Column1 end as Column1
from class
;quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and if you had typed this yourself without macros, you would get the same error. This is invalid SQL code. Please look at it carefully and find the SQL error.&lt;/P&gt;</description>
      <pubDate>Mon, 18 Mar 2024 21:42:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920846#M362683</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2024-03-18T21:42:49Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic SQL Case When</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920847#M362684</link>
      <description>&lt;P&gt;Why do you have statements like:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%put when ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;How is writing WHEN to the SASLOG going to help with generating SQL code??&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I cannot even begin to figure out what code it is you are trying to create.&lt;/P&gt;
&lt;P&gt;Please explain in words what you are trying to do.&amp;nbsp; Since you want to use a macro to generate some SAS code please show the SQL code you want to generate for the example inputs.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Mar 2024 21:45:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920847#M362684</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-03-18T21:45:23Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic SQL Case When</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920848#M362685</link>
      <description>&lt;P&gt;Are you just trying to replace missing values with -99?&lt;/P&gt;
&lt;P&gt;So something like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;select coalesce(column1,'-99') as column1
from have
;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 18 Mar 2024 21:47:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920848#M362685</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-03-18T21:47:59Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic SQL Case When</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920879#M362695</link>
      <description>&lt;DIV&gt;&lt;PRE&gt;%let records_flow_id_value=5;
%let flow_value1=column1;
%let flow_value2=column2;
%let flow_value3=column3;
%let flow_value4=column4;
%let flow_value5=column5;


options mprint;
%macro Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=);
,case when
&amp;nbsp; &amp;nbsp; %do i = 1 %to &amp;amp;nos_iteration.;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;i.)&amp;gt;0 then 1 else 0 end)+
&amp;nbsp; &amp;nbsp; %end;
0=0 then "-99"
&amp;nbsp; &amp;nbsp; when
&amp;nbsp; &amp;nbsp; %do j = 1 %to &amp;amp;nos_iteration.;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sum(case when lengthN(&amp;amp;&amp;amp;flow_value&amp;amp;j.)&amp;gt;0 then 1 else 0 end)+
&amp;nbsp; &amp;nbsp; %end;
0&amp;gt;=1 and lengthN(&amp;amp;ColumnName.)=0 then "-999" else &amp;amp;ColumnName.
%mend Assign_99_999;

data class;
set sashelp.class;
if age = 12 then column1 ="YES"; else column1="NO";
if age = 13 then column2 ="YES"; else column2="NO";
if age = 14 then column3 ="YES"; else column3="NO";
if age = 15 then column4 ="YES"; else column4="NO";
if age = 16 then column5 ="YES"; else column5="NO";
run;
options mprint;

proc sql;
create table _temp_ as&amp;nbsp;
select&amp;nbsp;
&amp;nbsp; &amp;nbsp; name
&amp;nbsp; &amp;nbsp; ,age
&amp;nbsp; &amp;nbsp; %Assign_99_999(nos_iteration=&amp;amp;records_flow_id_value., ColumnName=Column1) end as Column1
from class
;quit;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;Is this what you are looking for?&lt;/P&gt;</description>
      <pubDate>Tue, 19 Mar 2024 06:59:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamic-SQL-Case-When/m-p/920879#M362695</guid>
      <dc:creator>Mazi</dc:creator>
      <dc:date>2024-03-19T06:59:04Z</dc:date>
    </item>
  </channel>
</rss>

