2

計算された日付フィールドでWHERE操作を実行できますか?

SQLで正しく記述されていないルックアップフィールドがありますが、残念ながら変更できません。ただし、基本的には、日付を「2010年7月」や「2009年6月」などの文字として(他の日付以外のデータとともに)格納します。最初に日付を抽出し(LIKE演算子を使用して実行しました)、次に日付範囲に基づいてデータを抽出します。

 SELECT 
     BusinessUnit,
     Lookup,
     ReleaseDate 
 FROM 
 (
     SELECT TOP 10  
       LookupColumn As Lookup,
       BU as BusinessUnit,
       CONVERT(DATETIME, REPLACE(LookupColumn,'-',' ')) as ReleaseDate  
     FROM 
       [dbo].[LookupTable]
     WHERE 
       LookupColumn LIKE N'%-2010'
 ) MyTable
 ORDER BY ReleaseDate
 WHERE ReleaseDate = '2010-02-01'

WHERE演算子に問題があります。計算フィールドをカプセル化するサブクエリを作成すると、WHEREなどの操作を実行できると思いますが、間違っている可能性があります。結論として、計算フィールドで操作を行うことは可能ですか?

更新:確かに私は順序を混乱させ、さらにLIKE演算子は、私を混乱させていたTBD-2010などの日付以外の値も返していました。

4

3 に答える 3

2

ORDER BYand句がWHERE間違った方法で丸められています。それらを切り替えてみてください:

...
) MyTable
 WHERE ReleaseDate = '2010-02-01'
 ORDER BY ReleaseDate
于 2010-06-08T13:15:07.427 に答える
1

このテーブルをビューにカプセル化してから、ビューをクエリする方が簡単な場合があります。DATETIMEこのように、ビューだけに、このちょっとしたひどいことを通常の列に変換するロジックが含まれています。

于 2010-06-08T13:13:05.330 に答える
1

どのような「問題」を抱えていますか?

あなたの例では、ORDER BY 句の後に WHERE 句を使用することはできません...

于 2010-06-08T13:13:37.757 に答える