Proc SQLとcase文を使用して条件をテストし、インデックスを追加しようとしています。しかし、構文が私が見た例と一致するように見えるにもかかわらず、case
- where
文を動作させることはできません。私は次のエラーを取得する下のコードを使用:ヘルプで見ることができるものから、Proc SQLとCase文を使用するとエラーが発生する
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")
....
任意の提案
Gah!私はどのようにして盲目的になるのでしょうか?そして、例が 'いつ'(あなたが言うように) 'not'を使っているのを見ていません。テーブルを結合するときに私は 'where'を前のコードと同じように使用していました。そのため、コードをコピーした後に'どこで 'つまったのですか?ありがとう! – fileunderwater
私が 'Contains'を使用した理由は、(t1.test)を検索するために一連の文字列(t2で見つかったもの)を渡し、レコードを選択したりインデックス付けしたりすることでした。 'Find'は動作しますが、t2の各一致について個別に検索し、結果の表はlength(t1)* length(t2)となり、重複を除去するために後処理が必要です。しかし、ソリューションをありがとう。 – fileunderwater
私はあなたが答えを投稿した直後にupvotedし、今受け入れている – fileunderwater