0

現在、私のWHERE句には次のようなステートメントがあります。

AND ((@includeExpired = 0 AND lic.[DateExpiresUtc] > GETDATE()) 
     OR 
     (@includeExpired = 1 AND lic.[DateExpiresUtc] <> GETDATE())
    )

見栄えが悪いので、次のようなステートメントのより単純なバージョンを含めてみました。

(@includeExpired = 0 AND lic.[DateExpiresUtc] > GETDATE())

しかし、何も選択できないの@includeExpiredはいつですか。1

これを行うより良い方法はありますか?

4

2 に答える 2

2

@includeExpiredこの変数が結果セットに期限切れのレコードを追加することを決定することを意味する変数名によると、2 番目の部分lic.[DateExpiresUtc] <> GETDATE()のチェックは必要なく、最初の部分の他のチェックは必要ありません。

これを試して:

AND (lic.[DateExpiresUtc] > GETDATE()) OR (@includeExpired = 1)
于 2013-11-07T15:36:51.940 に答える
0

たった1つのアイデア。

(CASE
  WHEN @includeExpired = 1 THEN 1
  WHEN @includeExpired = 0 AND lic.[DateExpiresUtc] > GETUTCDATE() THEN 1
  ELSE 0 END) = 1
于 2013-11-07T15:33:55.073 に答える