SQL 2008根据条件拆分列

         在为人事局做报表过程中,遇到一个棘手的问题,客户要求把数据库中的一列数据根据条件分成多列。

   比如:数据库中有省份这么一列数据

   

   客户要求根据省份分类,河北省一列、北京市一列、天津市一列,剩下的为其他,目标效果如下:

   

   手工编写的SQL语句Version1.0版:

select   
  河北 = PARSENAME(provice,(charindex('河北',provice))) , 
  北京 = PARSENAME(provice,(charindex('北京',provice))) , 
  天津 = PARSENAME(provice,(charindex('天津',provice))) ,
  其他 =(select provice where charindex('河北',provice) = 0 
						  and charindex('北京',provice) = 0  
                          and charindex('天津',provice) = 0)
from a

         执行效果如下:

   
   可用户的需要只是想查询这个人是否在这个省份内,并不想知道具体是这个省的哪个城市,所以用replace函数对SQL语句进行了升级,SQL语句Version2.0版:

select   
  河北 =REPLACE(PARSENAME(provice,(charindex('河北',provice))),PARSENAME(provice,(charindex('河北',provice))),'√' ), 
  北京 =REPLACE(PARSENAME(provice,(charindex('北京',provice))),PARSENAME(provice,(charindex('北京',provice))),'√' ), 
  天津 =REPLACE(PARSENAME(provice,(charindex('天津',provice))),PARSENAME(provice,(charindex('天津',provice))),'√' ), 
  其他 =REPLACE((select provice where charindex('河北',provice) = 0 
						  and charindex('北京',provice) = 0  
                          and charindex('天津',provice) = 0),
                 (select provice where charindex('河北',provice)= 0 
						  and charindex('北京',provice) = 0  
                          and charindex('天津',provice) = 0),
                  '√')
from a

             执行效果如下:

    
    在解决问题过程中,发现网上对此类问题并没有很好的解决方案,所以在此把自己研究成果拿出来和大家分享下,希望能帮助大家解决开发过程中遇到的问题。

    

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值