2012-03-16 11 views
1

XまたはYの値を持つことができる分類子列があります。列がxまたはyの場合、選択クエリは日付を考慮してフィルタリングする必要があります。列内の値に基づいて異なる条件によるSQLフィルタリング

date BETWEEN i.valid_fromX AND i.valid_toX 
date BETWEEN i.valid_fromY AND i.valid_toY 

基本的に私は、SQLで次の同等のものが必要です

if classifier == X { 
    check if date is between valid_fromX to valid_toX 
} else if classifier == Y { 
    check if date is between valid_fromY to valid_toY 
} 

答えて

5

あなたが定期的および/またはロジックでそれを行うことができます。分類器はXに等しい場合には、この例では、1月を検索し、2月のための分類器は、Yが等しい場合:

where classifier = 'X' and date between '2012-01-01' and '2012-02-01' 
     or 
     classifier = 'Y' and date between '2012-02-01' and '2012-03-01' 
+0

くそーが、20秒で私を倒します! – Bridge

+0

大文字小文字を区別しない理由は何ですか? – Ben

2
WHERE (classifier = 'X' AND [date] BETWEEN valid_fromX AND valid_toX) 
     OR (classifier = 'Y' AND [date] BETWEEN valid_fromY AND valid_toY) 
0

マイナーバリアント:

where date between 
      case classifier when 'X' then valid_fromX when 'Y' then valid_fromY end 
      and case classifier when 'X' then valid_toX when 'Y' then valid_toY end 
関連する問題