Hi. I have two WHEN statements within my Case statement and I'm attempting to enclose part of the When statement in parentheses using SAS contatentation bars, but I'm getting syntax errors:
proc sql;
create table QueryData&ZIP5._&RULE_ORDER_CHAR as
select DISTINCT %unquote(%str(%')&ANALYSIS_DESC.%str(%')) as rule_nm length = 58,
a.actual_dlvry_date as ad_dt,
a.imb_code length = 31,
&RULE_ORDER as rule_order,
a.imb_dlvry_zip_5,
CASE
WHEN "("||%scan(&rule_list, 1,#)||")" AND a.RULEFLAG = "-" THEN "&RULE_ORDER"
WHEN "("||%scan(&rule_list, 2,#)||")" AND a.RULEFLAG = "-" THEN "&RULE_ORDER"
END as RuleFlag
from QueryData&ZIP5 as a
inner join QueryData&ZIP5 as b
on a.imb_code=b.imb_code
where a.source="A" and b.source="B" 220 &RULE_ORDER as rule_order, a.imb_dlvry_zip_5, CASE
220! WHEN "("||%scan(&rule_list, 1,#)||")" AND a.RULEFLAG = "-" THEN "&RULE_ORDER" WHEN
--
22
76
220! "("||%scan
ERROR 22-322: Syntax error, expecting one of the following: !, &, AND, OR, THEN, |.
ERROR 76-322: Syntax error, statement will be ignored.
Can anyone help me to resolve this error?
There is no need to do concatenation.
You may write:
CASE WHEN (%scan(&rule_list, 1,#)) and ...
There is no need to do concatenation.
You may write:
CASE WHEN (%scan(&rule_list, 1,#)) and ...
I'm not sure I see the need for macro code at all:
WHEN (scan("&rule_list", 1, "#") AND a.RULEFLAG = "-" THEN "&RULE_ORDER"
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.