2017-06-11 10 views
0
PROC SQL; 
SELECT end_dt-start_dt as EXPOSURE, 
(CASE WHEN (EXPOSURE)<0 THEN 0 ELSE CAST(TRUNC((EXPOSURE)/30+0.99) as 
INTEGER) END as bucket) FROM TABLE 

このステートメントは、SQLでは正常に動作しますが、proc sqlでは 'as'の両方でエラーが発生します。PROC 'as'のキャスト文でのSQLのスローエラー、 'as'のエイリアス

+0

今後、問題を再現できるように、最小限のエラー/ログとデータを含めてください。場合によっては複数のエラーがあるかもしれませんが、私は以下の最も可能性の高い問題に答えました。 – Reeza

答えて

1

CASTは有効なSAS SQL関数ではありません。計算を整数値に変換するには、適切なSAS SQL関数(この場合はINT())を使用します。

DB SQLを使用するには、SAS SQL Pass Throughを使用する必要があります。このパスでは、データベースにコードが直接渡されますが、クエリ全体が有効である必要があります。

0

SASには、Length、Format、Informatなどの各フィールドの属性があります。これらは、データソースの格納、読み取り、読み取りを支援します。

PROC SQLには型キャストは必要ありません。代わりにFORMAT文を使用します。全体的なアイデアが成立するが、私は、それをテストするために得ることができなかったとしてくださいまたは全体の文の構文

PROC SQL; SELECT end_dt-start_dt as EXPOSURE, CASE WHEN (EXPOSURE)<0 THEN 0 ELSE INT(TRUNC((EXPOSURE)/30+0.99)) END as bucket Format 8. FROM TABLE 

ありません。

関連する問題