sasfrogがコメントしたように、SAS SQLの新しい列を参照するには、CALCULATEDキーワードを追加する必要があり、クエリではネイティブDB2列を参照する必要があります。例えば:
proc sql;
create table TEST as
select DQBBDA AS 'Sbm Date'n
, case when DQBBDA > 999999
then input('1' || substr(put(DQBBDA,z8.),3), z7.)
end as SASDOS format=z7.
from DB2SCHEMA.ORIGIN
WHERE CALCULATED SASDOS = 1130314;
quit;
ただし、実際には、何をしているのかを再考し、DB2の列のみWHERE
を使用する句を作成する方法を理解する必要があります。それ以外の場合は、テーブル全体をSASにプルバックする必要があります(おそらく不十分なソリューション)。このような場合は、パススルークエリ(DB2でネイティブSQLを直接実行できる)を使用すると、おそらくより適切に解決されます。
更新:これは、LIBNAME参照からのテーブルではなくSASデータセットを使用した別の(テスト済みの)例です。関数の構文エラーも修正していることに注意してくださいinput
(最後のパラメーターは修正し7.
ないでくださいz7.
)。
data ORIGIN;
DQBBDA = 11130314; output;
DQBBDA = 22130314; output;
run;
options validvarname=any;
proc sql;
create table TEST as
select DQBBDA AS 'Sbm Date'n
, case when DQBBDA > 999999
then input('1' || substr(put(DQBBDA,z8.),3), 7.)
end as SASDOS format=z7.
from ORIGIN
WHERE CALCULATED SASDOS = 1130314;
quit;