SQL server查询结果拼接

如下图所示的一张表

有2张数据表,2张表依据内码关联。想要的结果如下:
ID SKF INA
805010 S00001/S00002
805030 S00004/S00005 I00002
如果表2的brand相同时,就把结果拼接到一起用‘/’隔开,请各位大蛇呢看看这个语句应该怎么写。
跪求各位大神帮帮忙。

问题分析:查询结果拼接有多种

示例使用的临时表:

Create Table t_b_TableTemp
(
ID as int not null,
username as varchar(50) null
)


示例1、查询username(字符列)与字符串(用户姓名)拼接

select '用户姓名'+username from t_b_TableTemp


示例2、查询ID(数字列)与字符串(序号)拼接

select '序号'+cast(ID as varchar(50)) from t_b_TableTemp

与示例1比较后你就知道了,凡是遇到数字类型和字符拼接,都需要先将数字类型转换为字符串类型,转换函数有Cast和Convert,你可以酌情使用。


示例3:多列合并

select cast(ID as varchar(50))+username from t_b_TableTemp


示例4:多个查询结果的合并(使用Union All或Union),在使用的时候一定要注意多个查询结果的列数,列类型必须一致

select ID,username from t_b_TableTemp
union all
select ID,username from t_b_TableTemp

上面的查询结果是t_b_TableTemp记录得双倍,也就是说Union all方式是将两个查询结果拼接起来为一个查询结果。

select ID,username from t_b_TableTemp
union 
select ID,username from t_b_TableTemp

上面的查询结果和t_b_TableTemp记录一致,也就是说Union是会去除完全重复的记录

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-25
select ID,brand,stuff((select '/'+oeno from tb where a.ID=ID AND a.brand=brand 
for xml path('') ),1,1,'') as SKF
from tb a
group by ID,brand

大概是这个形式,我不知道你还有什么条件区分,你自己再改造吧

追问

你这个方法是转换成XML的,我现在没有办法转换成XML的,虽然不行,不过还是采纳了。

追答

没有办法转是什么意思?这个最终结果不是xml格式,是字符格式,stuff函数已经隐式转换了啊

本回答被提问者和网友采纳
相似回答