2014-02-25 17 views
0

我試圖從一個表中獲取數據。但這是一張舊桌子,裏面有成千上萬行,但是日期列是分開的。我的意思是,月份和年份在不同的列。如何在連接列之間使用表達式

|id | member | month | year | balance | 
|-------------------------------------| 
|1 | 1001 | 11 | 2013 | 100  | 
|2 | 1002 | 11 | 2013 | 120  | 
|3 | 1003 | 11 | 2013 | 105  | 
|4 | 1001 | 12 | 2013 | 140  | 
|5 | 1002 | 12 | 2013 | 130  | 
|6 | 1003 | 12 | 2013 | 80  | 
|7 | 1001 | 1  | 2014 | 90  | 
|8 | 1002 | 1  | 2014 | 20  | 
|9 | 1003 | 1  | 2014 | 180  | 
--------------------------------------| 

這是樣本表。我嘗試在2013年10月和2014年2月之間獲取數據。

SELECT 
    SUM(balance) 
FROM 
    sample_table 
WHERE 
    CONCAT(month,year) BETWEEN 102013 AND 022014 

此查詢會給我一個空的結果。我怎麼能得到真正的結果?任何人都可以給我一個主意。

- 編輯 -

日期範圍可以更改。所以,如果我能得到真正的結果,兩者之間是最好的解決方案。

回答

0

嘗試表達where條款是這樣的:

SELECT SUM(balance) 
FROM sample_table 
WHERE year*100 + month between 201301 and 201402; 

也就是說,做的比較數字而不是字符串。對於字符串,你有前導零的問題來得到正確的比較。

更重要的是,使用格式YYYYMM而不是MMYYYY。前者用於比較,後者則不用。

+0

謝謝@Gordon。我可以像你的那樣表達我的表情,現在它就可以工作。並感謝日期格式的額外解釋。 –

相關問題