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根据条件拆分列

时间: 2024-11-07 05:50:52

SQL 2008根据条件拆分列的相关文章

SQL 2008依据条件拆分列

在为人事局做报表过程中,遇到一个棘手的问题.客户要求把数据库中的一列数据依据条件分成多列. 比方:数据库中有省份这么一列数据 客户要求依据省份分类.河北省一列.北京市一列.天津市一列.剩下的为其它.目标效果例如以下: 手工编写的SQL语句Version1.0版: select 河北 = PARSENAME(provice,(charindex('河北',provice))) , 北京 = PARSENAME(provice,(charindex('北京',provice))) , 天津 = PA

安装sql 2008步骤以及所遇到的问题

下载网址:http://www.xiazaiba.com/html/4610.html 安装步骤: 1.  在Windows7操作系统系,启动Microsoft SQL 2008安装程序后,系统兼容性助手将提示软件存在兼容性问题,在安装完成之后必须安装SP1补丁才能运行,如图1-1所示.这里选择"运行程序"开始SQL Server 2008的安装. 注:此时可能会出现(sql server安装程序遇到以下错误,在创建窗口句柄之前,不能在控件上调用Invoke或BeginInvoke)的

SQL 2008 SP2 找不到SQL Server Engine

原文:SQL 2008 SP2 找不到SQL Server Engine 最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL server.界面如下: 正常的界面应该是这样的: 你可以从上图看到, 上面列出了我机器上的SQL 实例SQLEXPRESS. 那么客户的机器上为什么就不能列出呢? 我首先考虑是不是下载的SP2版本不对?仔细核查了下,客户的SQL server 是x64版本的,而下载的SP2也是64bit的版本.所以补

SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600

今天将由于需要就将我的SQL 2008升级到SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.Sqlerror:该数据库是在运行版本10.50.2500的服务器上备份的,该版本与此服务器(运行版本10.00.1600)不兼容.请在支持该备份的服务器上还原数据库,或者使用与此服务器兼容的备份.” 经过一番查证得知: 所谓的10.00.1600其实就是SQL 2008 10.50.1600其实就是

SQL 2008存储图片和SQL 2008读取图片

用SQL Server存储文字数据很容易实现,如果用SQL Server存储图片呢?大家有没有实现思路呢?现在我用一个Demo来为大家提供一种在SQL Server中存储图片的思路. 场景:在superPhoto文件夹中,有三位NBA超级巨星的图片需要存储在数据库中,他们分别是保罗.罗斯和德隆,文件内容如下: 有了需求,下面讲实现.实现过程分为3个步骤. 步骤1:我们需要在数据库test中建立T_superStar表,并向表中插入三位球星的信息. create table T_superStar

将string数组转化为sql的in条件

例如:我想将String[] str = {"4","5","6"}转化为"'4','5','6'"字符串.这样我就可以用sql查询:select * from tableName id in (字符串)了. 项目中实现的源码如下: StringBuffer idsStr = new StringBuffer(); for (int i = 0; i < ids.length; i++) { if (i > 0)

SQL 2008维护计划不执行的问题

平台环境; 先是装了WINDOWS 2008,没有升级到AD,再安装了sql2008后再升级了AD. 现在SQL建了几个数据库备份计划,但都提示下面的信息: 日期  2010-4-15 9:36:00日志  作业历史记录 (MaintenancePlan.Subplan_1) 步骤 ID  0服务器  SERVER 作业名称  MaintenancePlan.Subplan_1步骤名称  (作业结果)持续时间  00:00:00SQL 严重性  0SQL 消息 ID  0已通过电子邮件通知的操作

sql 2008 登录不上的解决方法

打开开始菜单,找到microsoft SQL 2008>>配置工具>>配置管理器 打开配置管理器之后>>网络配置>>SQLEXPRESS协议   把Named Pipes  和TCP/IP协议右击鼠标启用 SQL SERVER服务打开  将SQL Server(EXPRESS)服务重新启用 . 将服务器名改为(local)或下面的(local)\SQLEXPRESS即可登录

sql 2008 失败 需要重新启动计算机 的解决办法

大致出错信息如下:RebootRequiredCheck 检查是否需要挂起计算机重新启动.挂起重新启动会导致安装程序失败. 失败 需要重新启动计算机.必须重新启动计算机才能安装 SQL Server.解决步骤:a .重启机器,再进行安装,如果发现还有该错误,请按下面步骤b.在开始->运行中输入regeditc.到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置d.在右边窗口右击PendingFileRen