SQL server查询结果拼接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_TableTempunion all
select ID,username from t_b_TableTemp
上面的查询结果是t_b_TableTemp记录得双倍,也就是说Union all方式是将两个查询结果拼接起来为一个查询结果。
union
select ID,username from t_b_TableTemp
上面的查询结果和t_b_TableTemp记录一致,也就是说Union是会去除完全重复的记录
参考技术A select ID,brand,stuff((select '/'+oeno from tb where a.ID=ID AND a.brand=brandfor xml path('') ),1,1,'') as SKF
from tb a
group by ID,brand
大概是这个形式,我不知道你还有什么条件区分,你自己再改造吧
你这个方法是转换成XML的,我现在没有办法转换成XML的,虽然不行,不过还是采纳了。
追答没有办法转是什么意思?这个最终结果不是xml格式,是字符格式,stuff函数已经隐式转换了啊
本回答被提问者和网友采纳sql查询结果直接拼接
select a.*,(a.startTime+‘|‘+a.endTime) as states from OA_Vote_Subject as a where 1=1
拼接后的states为 2016-02-02 00:00:00|2016-02-29 00:00:00
以上是关于SQL server查询结果拼接的主要内容,如果未能解决你的问题,请参考以下文章