我試圖使用Proc SQL和一個case-statement來測試一個條件並添加一個索引。但是,即使語法看起來與我見過的示例相匹配,我也無法使case
- where
語句正常工作。使用下面的代碼,我得到以下錯誤:使用Proc SQL和Case-statement時出錯
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, a numeric constant, a datetime constant, a missing value, (, +, -, BTRIM, CALCULATED, CASE, EXISTS, INPUT, NOT, PUT, SELECT, SUBSTRING, TRANSLATE, USER, WHEN, ^, ~.
Proc SQL;
Create table table_ix AS
Select t1.*,
Case
Where UPCASE(t2.test) Contains UPCASE(TRIM(t2.key)) Then 1
Else 0
end as index
From Table1 AS t1, Table2 AS t2;
QUIT;
從什麼可以在幫助看,我的發言的例子相匹配。這可能很容易解決,但我不能讓它工作(例如,我試過匹配單個字符串以查看對單獨表格的引用是否是問題,例如... Contains UPCASE("Teststring")
....
任何建議
嘎!我怎麼能這樣盲目,沒有看到這些例子使用'when'(如你所說)而不是'where'。在連接表時,我在代碼的早期使用'where'進行類似的匹配,這就是爲什麼我在複製代碼後被'where'卡住的原因。謝謝! – fileunderwater
我使用'Contains'的原因是傳遞一系列字符串(在t2中找到)在(t1.test)中搜索,選擇或索引記錄(這也是我沒有加入的原因)。 'Find'可以工作,但是在t2中對每個匹配單獨搜索到結果表將變爲length(t1)* length(t2),並且需要一些後處理來刪除重複項。儘管感謝解決方案。 – fileunderwater
我在發佈答案後立即投了票,現在已經接受了 – fileunderwater