SQL中合并多条记录中某一个字段 15

selectda01fromtdm01得到的结果不确定多少列,现在想转化成一行,用适合sqlserver2008的写法写出来。例如结果集:da01001002003004... select da01 from tdm01 得到的结果不确定多少列,现在想转化成一行,用适合sql server 2008的写法写出来。
例如结果集: da01
001
002
003
004
005

现在想变为001002003004005
不要函数写法和游标写法,我的后台已经比较慢了。
展开
 我来答
badkano
2014-07-31 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部

创建表

create table tdm01
(da01 varchar(10))

insert into tdm01 values ('001')
insert into tdm01 values ('002')
insert into tdm01 values ('003')
insert into tdm01 values ('004')
insert into tdm01 values ('005')

执行

select distinct da01=
stuff((select ''+da01 from tdm01 t where da01=t.da01 for xml path('')), 1, 1, '')  
from tdm01

截图

追问
我这边会报错: 'xml' 附近的语法不正确。
俊云蝶u
2014-07-31 · TA获得超过132个赞
知道答主
回答量:171
采纳率:100%
帮助的人:59.6万
展开全部
这个可以写一个函数:
create function f1(@id AS int)
returns varchar(100)
as
declare @a as varchar(100)
set @a=''
select @a=@a+','+备注 from 表2 where cid=@id
return substring(@a,2,len(@a))
然后这样写查询:
select 企业名称,联系人,f1(id) from 表1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Misszhu摩羯
2018-03-30
知道答主
回答量:5
采纳率:0%
帮助的人:1247
展开全部

这个可以写一个函数:
create function f1(@id AS int)
returns varchar(100)
as
declare @a as varchar(100)
set @a=''
select @a=@a+','+备注 from 表2 where cid=@id
return substring(@a,2,len(@a))
然后这样写查询:
select 企业名称,联系人,f1(id) from 表

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花间翘楚
推荐于2017-11-25 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:101
采纳率:100%
帮助的人:87.3万
展开全部
这种事情交给后台做啊。。数据库里搞这种好浪费性能。。
把结果集返回到程序,然后组装一下 insert or update 随你。。。

不过你这么倔强。。

badkano的回答就可以
以下是stuff的语法。。
http://msdn.microsoft.com/zh-cn/library/ms188043.aspx

STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。

适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。

STUFF ( character_expression , start , length , replaceWith_expression )
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
onedaymeetyou
2014-08-01 · 人生即是等待..等待...
onedaymeetyou
采纳数:96 获赞数:250

向TA提问 私信TA
展开全部
用程序写一个for循环拼成一个字符串不行么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式