



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL 语句一行拆成多行及多行合并成一行的方法一、SQL 语句对一行(单元格)数据拆分成多行有时候我们也许对一行数据拆分成多行的操作例如:Col1 COl2- -1 a,b,c2 d,e3 f拆分成:Col1 COl2- -1 a1 b1 c2 d2 e3 f下面给出几个经常用到的方法:1、SQL2000用辅助表ifobject_id(Tempdb.#Num)isnotnulldroptable#Numgoselecttop100ID=Identity(int,1,1)into#Numfromsyscolumnsa,syscolumnsbSelecta.Col1,COl2=substring(a.Col2,b.ID,charindex(,a.Col2+,b.ID)-b.ID)fromTaba,#Numbwherecharindex(,+a.Col2,b.ID)=b.ID-也可用substring(,+a.COl2,b.ID,1)=,2、SQL2005用Xmlselecta.COl1,b.Col2from(selectCol1,COl2=convert(xml,+replace(COl2,)+)fromTab)aouterapply(selectCol2=C.v.value(.,nvarchar(100)froma.COl2.nodes(/root/v)C(v)b3、用CTEwithroyas(selectCol1,COl2=cast(left(Col2,charindex(,Col2+,)-1)asnvarchar(100),Split=cast(stuff(COl2+,1,charindex(,Col2+,),)asnvarchar(100)fromTabunionallselectCol1,COl2=cast(left(Split,charindex(,Split)-1)asnvarchar(100),Split=cast(stuff(Split,1,charindex(,Split),)asnvarchar(100)fromRoywheresplit)selectCOl1,COl2fromroyorderbyCOl1option(MAXRECURSION0)二、SQL 语句SQL 多行数据合并为一个单元格(行)描述:将如下形式的数据按id字段合并value字段。id value- -1 aa1 bb2 aaa2 bbb2 ccc需要得到结果:id value- -1 aa,bb2 aaa,bbb,ccc即:group by id, 求 value 的和(字符串相加)*/-1、sql2000中只能用自定义的函数解决create table tb(id int, value varchar(10)insert into tb values(1, aa)insert into tb values(1, bb)insert into tb values(2, aaa)insert into tb values(2, bbb)insert into tb values(2, ccc)gocreate function dbo.f_str(id varchar(10) returns varchar(1000)asbegin declare str varchar(1000) select str = isnull(str + , , ) + cast(value as varchar) from tb where id = id return strendgo-调用函数select id , value = dbo.f_str(id) from tb group by iddrop function dbo.f_strdrop table tb-2、sql2005中的方法create table tb(id int, value varchar(10)insert into tb values(1, aa)insert into tb values(1, bb)insert into tb values(2, aaa)insert into tb values(2, bbb)insert into tb values(2, ccc)goselect id, value = stuff(select , + value from tb t where id = tb.id for xml path() , 1 , 1 , )from tbgroup by iddrop table tb-3、使用游标合并数据create table tb(id int, value varchar(10)insert into tb values(1, aa)insert into tb values(1, bb)insert into tb values(2, aaa)insert into tb values(2, bbb)insert into tb values(2, ccc)godeclare t table(id int,value varchar(100)-定义结果集表变量-定义游标并进行合并处理declare my_cursor cursor local forselect id , value from tbdeclare id_old int , id int , value varchar(10) , s varchar(100)open my_cursorfetch my_cursor into id , valueselect id_old = id , s=while FETCH_STATUS = 0begin if id = id_old select s = s + , + cast(value as varchar) else begin insert t values(id_old , stuff(s,1,1,) select s = , + cast(value as varchar) , id_old = id end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农产品加工企业供应合同
- 九年级语文上册 第五单元 写作《论证要合理》说课稿 新人教版
- 第九课 江南水乡-滤镜的综合运用说课稿-2025-2026学年初中信息技术浙教版广西 宁波八年级上册-浙教版广西 宁波
- 关于银行职员爱岗敬业演讲稿
- 关于元旦的活动总结
- 官兵一致课件
- 2025年温州瓯海区仙岩社区医院公开招聘执业医师、中医师若干名笔试备考题库及答案解析
- 文化创意产业担保合同创新模式与风险防范
- 城市综合体商铺经营权转让及商业综合体品牌运营合同
- 文化产业入股协议书分红与知识产权共享合作协议
- 中药用药安全知识培训课件
- 重症胰腺炎护理查房
- 共青团入团团章知识考试题库300题(含答案)
- 老旧护栏加固施工方案
- 中国资源循环集团有限公司子公司招聘笔试题库2025
- 2025年青海海东通信工程师考试(通信专业实务终端与业务)高、中级考前题库及答案
- 露天煤业安全生产培训课件
- 2025年全国医学基础知识试题(附答案)
- 食堂安全培训课件
- 【课件】角的概念+课件+2025-2026学年人教版(2024)七年+数学级上册+
- 2025年防雷检测专业技术人员能力认定考试题库及答案
评论
0/150
提交评论