2016-09-22 12 views
1

考えると、このような(試料)表:選択範囲

期間Iは、例えば、所与の期間の間のすべての行を照会する方法を文字列は、ある
PERIOD ORD DATA... 
Dec16 1 
Sep16 3 
Aug16 4 
Jul16 5 
Jun16 7 
May16 8 
Apr16 9 
Mar16 11 
Feb16 12 
Jan16 13 
Dec15 15 
Nov15 16 
Oct15 17 
Sep15 19 
Aug15 20 
Jul15 21 
Jun15 23 
May15 24 
Apr15 25 
Mar15 27 
Feb15 28 
Jan15 29 

PERIOD = 'Mar16'から 'Jun15'(包括的な)の間。 SQLクエリでORD列を活用して値の範囲を取得する方法はありますか?

+0

が使用しているデータベースとのあなたの質問にタグを付けてくださいRDBMSに応じて動作する可能性があります。 –

+0

問題のDBはnetezza – geofrey

+0

私も何かを学んだ。私は前にネッツァについて聞いたことがありません.... –

答えて

2

Aternativeゴードンに、これは

SELECT * 
FROM thetable 
WHERE ORD BETWEEN (SELECT ORD FROM thetable WHERE PERIOD ='Mar16') 
       AND (SELECT ORD FROM thetable WHERE PERIOD ='Jun15') 
+0

Worked!ありがとう! – geofrey

0

期間を日付に変換し、比較のために使用します。例えば、いくつかのデータベースはto_date()をサポートし、それは次のようになります。質問に指定した日付にあなたの時間を変換するための特定の機能がされていない、データベースによって異なること

where to_date(period, 'MonYY') between to_date('Jun15', 'MonYY') and to_date('Mar16', 'MonYY') 

注意(まだ?)。しかし、これはあなたにそれをする方法のアイデアを与えます。

また、ピリオドを文字列として保存する場合は、YYYY-MM形式を使用する必要があります。これは正しくソートされ、不等式の比較を使用できます。

+0

それはほんの数ヶ月であれば役に立つかもしれませんが、私の場合は四半期の値もありました。 '1Q16'はtoDate関数では機能しないかもしれない – geofrey