首页 > 代码库 > SQL 2008依据条件拆分列
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运行效果例如以下:
在解决这个问题过程中,发现网上对此类问题并没有非常好的解决方式,所以在此把自己研究成果拿出来和大家分享下。希望能帮助大家解决开发过程中遇到的问题。
SQL 2008依据条件拆分列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。