- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 08-21-2022 06:12 AM
(1638 views)
Hi,
I would like to merge two data set and also create a new variable by using proc sql. This is my code but am getting the following syntax error.
proc sql;
create table final_table_0607 as
select * from case_07 as x left join mth_0607 as y
on x.bene_id = y.bene_id
where month_fu-(mondx1+12) as month_std;
__
22
76
ERROR 22-322: Syntax error, expecting one of the following: ;, !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, ?, AND, BETWEEN,
CONTAINS, EQ, EQT, EXCEPT, GE, GET, GROUP, GT, GTT, HAVING, IN, INTERSECT, IS, LE, LET, LIKE, LT, LTT, NE, NET, NOT,
NOTIN, OR, ORDER, OUTER, UNION, ^, ^=, |, ||, ~, ~=.
ERROR 76-322: Syntax error, statement will be ignored.
2 REPLIES 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
The WHERE clause needs a valid Boolean expression.
month_fu-(mondx1+12) as month_std
is not a Boolean expression, it rather looks like a part of the SELECT clause.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Looks like you want to create a new variable month_std. I would write the code as follows
proc sql;
create table final_table_0607 as
select *,x.month_fu-(x.mondx1+12) as month_std
from case_07 as x left join mth_0607 as y
on x.bene_id = y.bene_id;
quit;
I have taken x.month_fu and x.modx1 as an example assuming it comes from the first table. You can take what ever is applicable in your case (x or y).