需要一个sql的处理方法
急需一个sql的处理方法
现有一个需求,客户的一张表里记录的数据举例如下:
id new_year sum_Val call_id
1 2011 20010 01002
2 201101 300 01002
3 201102 7030 01002
4 2012 20010 01002
5 201201 300 01002
6 201202 7030 01002
7 2014 20010 01002
8 201401 300 01002
9 201402 7030 01002
这个表里的new_year字段混合了两种时间数据,一种是4位长度的年,一种是6位长度的年月的,现在要对该表进行数据统计,要求统计的结果里不能参有4位年的数据。我的问题是,如果在不使用length函数,substr函数等sql特有的函数功能下,如何通过常规的方法对四位年的记录进行筛选???
------解决思路----------------------
还好你只有6位
WHERE new_year>9999
这样就把4位的都过滤掉了
------解决思路----------------------
觉得把 new_year 转成数值型,隐形转换也可以 ,< 10000的就是四位的! where new_year < 9999
------解决思路----------------------
4位的年一共也没多少值,枚举一下 not in
现有一个需求,客户的一张表里记录的数据举例如下:
id new_year sum_Val call_id
1 2011 20010 01002
2 201101 300 01002
3 201102 7030 01002
4 2012 20010 01002
5 201201 300 01002
6 201202 7030 01002
7 2014 20010 01002
8 201401 300 01002
9 201402 7030 01002
这个表里的new_year字段混合了两种时间数据,一种是4位长度的年,一种是6位长度的年月的,现在要对该表进行数据统计,要求统计的结果里不能参有4位年的数据。我的问题是,如果在不使用length函数,substr函数等sql特有的函数功能下,如何通过常规的方法对四位年的记录进行筛选???
------解决思路----------------------
还好你只有6位
WHERE new_year>9999
这样就把4位的都过滤掉了
------解决思路----------------------
觉得把 new_year 转成数值型,隐形转换也可以 ,< 10000的就是四位的! where new_year < 9999
------解决思路----------------------
4位的年一共也没多少值,枚举一下 not in