2011-11-15 7 views
0

が、私はその後、私の質問に、このクエリこのSQL関数、特にMOD関数を短縮する他の方法はありますか?

SELECT Calendar."Production Week" FROM Opex 
WHERE 
(
Calendar."Production Week" BETWEEN VALUEOF("LAST_WEEK")-200 
AND 
VALUEOF("LAST_WEEK") 
) 
OR 
(
(
(MOD(Calendar."Production Week", 100) = 1) 
OR 
(MOD(Calendar."Production Week", 100) = 13) 
OR 
(MOD(Calendar."Production Week", 100) = 26) 
OR 
(MOD(Calendar."Production Week", 100) = 39) 
OR 
(MOD(Calendar."Production Week", 100) = 52) 
) 
AND 
(Calendar."Production Week" <= 
VALUEOF("LAST_WEEK")) 
) 
ORDER BY Calendar."Production Week" DESC 

を持って、それがより短いこのクエリを作るための他の方法であることが特にMOD機能なぜなら、それは同じ結果を持っているのより200639、200652、200713、2007年26、 200739 ...など?前もって感謝します。

答えて

0

あなたはそれだIN句

MOD(Calendar."Production Week", 100) in (1,13,26,39,52) 
1
MOD(Calendar."Production Week", 100) IN (1,13,26,39,52) 

十分ですか?

+0

のORにチェーンを変更することができます。ありがとうアンドリュー:) – user685937

0
SELECT Calendar."Production Week" FROM Opex 
WHERE (
    Calendar."Production Week" BETWEEN VALUEOF("LAST_WEEK")-200 AND VALUEOF("LAST_WEEK") 
) 
OR 
(
    (
     (MOD(Calendar."Production Week", 100) in (1, 13, 26, 39, 52) 
    ) 
    AND (Calendar."Production Week" <= VALUEOF("LAST_WEEK")) 
) 
ORDER BY Calendar."Production Week" DESC 
+0

ありがとうNeville :) – user685937

関連する問題