の句は、他の分野の中で、次を含む大きなテーブルがある場合の範囲です。日付のproc SQL文
EXPIRATION_DATEはdatetime20です。私は2014年12月31日後に期限が切れるか(NULL)を期限切れにしない行を抽出しようとしている
フォーマット、およびNULLにすることができます。
のprocのSQLクエリを次のようにどこ文は私が唯一のNULL有効期限を選択して、次のフィールドを追加するときに、しかし、私には結果
where coalesce(datepart(expiration_date),input('31/Dec/2020',date11.))
> input('31/Dec/2014',date11.);
を与えない追加:
put(coalesce(datepart(expiration_date),input('31/Dec/2020',date11.)),date11.) as value,
put(input('31/Dec/2014',date11.),date11.) as threshold,
case when coalesce(datepart(expiration_date),input('31/Dec/2020',date11.)) > input('31/Dec/2014',date11.)
then 'pass' else 'fail' end as tag
それは 'を示していますTAGの下に「合格」と入力してください。
これは私がSAS Enterprise Guideの7.1を使用し、それを理解しようとしているときに、私は私が何を
proc sql inobs=100;`
を使用してきたSQL Serverで
where isnull(expiration_date,'9999-12-31') > '2014-12-31'
を使用したもの複製するための努力であります間違っている?ありがとうございました。
いくつかの有効期限:
30OCT2015:00:00:00
30OCT2015:00:00:00
29OCT2015:00:00:00
30OCT2015:00:00:00
ポインタのカップル。そこに 'input'を使う必要はありません。日付定数を使用することができます。 '' 31DEC2014 "d"は日付定数で、日付を直接表します。第二に、 'value'と' threshold'の値を見ることは役に立ちます。第3に、データをSASに読み込んで(選択して)、同じフィルタを適用するとどうなりますか?パススルークエリで何かが誤って翻訳されている可能性があります。 – Joe
また、このクエリを実行するためにSQL Serverに接続しているとしますか?もしあなたが 'libname'を使って接続しているなら、libnameに' DIRECT_SQL = NONE'を追加してみてください(http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/defaultを参照してください)。 /viewer.htm#a002679005.htm)、それが問題を修正するかどうかを確認してください。もしそうなら、私はこれを答えにします。 – Joe
"31DEC2014" dを使用すると問題が解決しました。なぜ私は興味があります。 – Ben