日期:2014-05-18  浏览次数:20476 次

数据没能汇总起来,Why
规则:
  根据“Unit”字段作为条件,对“MonitorType”字段赋值,以对数据做一下汇总,但是发现有的记录汇总起来了,有的没有汇总起来,这是为什么呢?

SQL:
  update SpecialDataSumByHour set MonitorType=(case Unit when 'PPM' then 'CM' when 'g/Kg' then 'HM' when '℃' then 'TM' when 'kPa' then 'AM' when 'm3/h' then 'FW' when 'KJ' then 'EM' end)


汇总之后:select * from SpecialDataSumByHour where MonitorType is NULL 结果如下图



为什么呢???为什么有的没有赋值呢?

------解决方案--------------------
探讨
规则:
根据“Unit”字段作为条件,对“MonitorType”字段赋值,以对数据做一下汇总,但是发现有的记录汇总起来了,有的没有汇总起来,这是为什么呢?

SQL:
update SpecialDataSumByHour set MonitorType=(case Unit when 'PPM' then 'CM' when 'g/Kg' then 'HM' when ……

------解决方案--------------------
SQL code
update SpecialDataSumByHour set MonitorType=(case Unit when 'PPM' then 'CM' when 'g/Kg' then 'HM' when '℃' then 'TM' when 'kPa' then 'AM' when 'm3/h' then 'FW' when 'KJ' then 'EM' else '123'end)
--加个ELSE  这样可以定位 Unit 的值是??,把漏掉的这个??值加到 WHEN THNE 里

------解决方案--------------------
SQL code
update SpecialDataSumByHour 
set MonitorType=(case Unit when N'PPM'  then 'CM' 
                           when N'g/Kg' then 'HM' 
                           when N'℃'   then 'TM' 
                           when N'kPa'  then 'AM' 
                           when N'm3/h' then 'FW' 
                           when N'KJ'   then 'EM' 
                           else '未定义' end)

------解决方案--------------------
update SpecialDataSumByHour 
set MonitorType=(case Unit when N'PPM' then 'CM' 
when N'g/Kg' then 'HM' 
when N'℃' then 'TM' 
when N'kPa' then 'AM' 
when N'm3/h' then 'FW' 
when N'KJ' then 'EM' 
else '未定义' end)
正如5楼所做的,你应该把格式写得清楚点。不然不光是我们看得不舒服,你自己也一样,这是编程习惯问题。