我正在尝试从一个表中获取数据。但这是一张旧表,其中有数千行,但是日期列分开。我的意思是,不同列中的月份和年份。
|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 :(得分:0)
尝试像这样表达where
子句:
SELECT SUM(balance)
FROM sample_table
WHERE year*100 + month between 201301 and 201402;
也就是说,将比较作为数字而不是字符串进行。对于字符串,您会遇到引导零以进行正确比较的问题。
更重要的是,使用格式YYYYMM而不是MMYYYY。前者适用于比较,后者则不适用。