0

select句の一部として日付(salesdate)をリストするレポートを書いています。Salesdate は where 句でも使用され、レポートの基になる最も早い販売日を設定します (たとえば、2012 年 11 月 1 日よりも上の salesdate を持つすべての販売をレポートに一覧表示する必要があります)。ただし、この日付は、レポートの別のフィールドによって異なります。たとえば、item = item1 の場合、2012 年 10 月 1 日より前のレコードは必要ありませんが、item = item2 の場合、2012 年 11 月 1 日より前のレコードは必要ありません。私はこれについて考えました:

case when item = item1 then salesdate > 2012-10-01 else case when item = item2 then salesdate > 2012-11-01 select 句と where 句の両方であまり自信がなく、もちろん機能しませんでした (case not条件を期待しています)。助言がありますか?ありがとう!

4

1 に答える 1

1

あなたの質問を正しく理解していれば、WHERE 句の複合述語を使用してこれを達成できると思います。

例えば:

...    WHERE (Item = Item1 AND SalesDate > '2012-10-01') OR (Item = Item2 AND SalesDate > '2012-11-01')

これにより、SQL オプティマイザーが WHERE 句内の case ステートメントを整理する必要がないため、実際にはパフォーマンスが向上します。

HTH

于 2013-03-26T13:29:57.663 に答える