统计数据需要按省份分组,这是大家经常遇到的问题。今天遇到一奇葩问题,由于省份(province)字段数据不规范,
有的是省份名称,有的是 "" (空) 有的是 "未知"。这时 group by province 时就会出现未知的一组 空数据的一组 当然
前台是不能显示空省份的 如果把空省份都循环赋值为未知的话 前台显示未知省份 显得也不是那么和谐。
解决办法:
以下如果没有特殊说明则
定义 : 表名 为 table_name
字段名 为 field_name1
field_name2
表别名 为 table_alias
字段别名 为 field_alias
select field_name1 ,field_name2 ,count( field_name3 ) as field_alias ,
case
province when
''
then
'河北'
when
'未知'
then
'河北'
else
province end
as
pro
from table_name where
.......
group by
pro
注意:
如果在sql语句中给字段赋值,此时group by 的字段一定要用别名(
跟数据库原字段名不一致
),如果跟数据库字段同名的话会以未赋值时数据库字段的情况分组,虽然已经把空省份赋值为“河北”,但是分组后会出现河北分组重复的情况。(实际空省份还是独立一组)
统计数据需要按省份分组,这是大家经常遇到的问题。今天遇到一奇葩问题,由于省份(province)字段数据不规范,有的是省份名称,有的是 "" (空) 有的是 "未知"。这时 group by province 时就会出现未知的一组 空数据的一组 当然前台是不能显示空省份的 如果把空省份都循环赋值为未知的话 前台显示未知省份 显得也不是那么和谐。 解决办法:
Null值属于任何类型,它和
空
字符不一样,
空
字符它是属于varchar2的
数据
类型,但是null可以是任何
数据
类型,因此在处理
空
值的时候特别要小心。示例:在oracle中的模版示例中有emp表,我们知道有一列deptno列,但是其中没有任何一个员工,因此对它进行
group
by 的时候,如果不加
group
by 的时候, 它会返回一行
数据
,但是如果加了结果就不是预想的那样了。来做一个演示: