2016-09-22 124 views
1

給定一個(樣品)表是這樣的:基於另一列選擇範圍

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是一個字符串,我將如何查詢給定的時間段之間的所有行例如PERIOD ='Mar16'和'Jun15'之間(含)。有什麼方法利用SQL查詢中的ORD列來獲取值的範圍?

+0

請標記與您正在使用的數據庫你的問題。 –

+0

有問題的數據庫是netezza – geofrey

+0

我也學到了一些東西。我以前從來沒有聽說過netezza .... –

回答

2

Aternative戈登,這可能會實現取決於您的RDBMS

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

工作!謝謝! – 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