sqlserver 查询结果列组成字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 查询结果列组成字符串相关的知识,希望对你有一定的参考价值。

有2个表 一个主表 一个子表
主表:first 字段:firstID
子表:last 字段:lastID,firstID, 姓名,电话
表是一对多的关系

数据展示:
主表:first 子表:last
firstID lastID,firstID, 姓名,电话
1a 1 ,1a ,纽克,1878221501
2b 1 ,1a ,小分,1878221501
3c 1 ,2b ,螟蛉,1878221501
4d 1 ,3c ,蟑螂,1878221501
5e 1 ,3c ,虎娃,1878221501

实现问题描述:
问题1:我要把子表的主表id一样的组成字符串(比如主表firstID是1a那么就组成[纽克:1878221501,小分:1878221501]) 且 形成临时表
根据已上数据展示是这样:
lastID,firstID,json
1 ,1a ,[纽克:1878221501,小分:1878221501]
1 ,2b ,[螟蛉,1878221501]
1 ,3c ,[蟑螂:1878221501,虎娃:1878221501]

问题2:主表 左联查 临时表 返回结果集

Select L.lastid,f.firstid,(Select 姓名+':'+电话+',' from [last] where firstid=f.firstid For XML Path(''))
from [first] F left join [last] L
on F.firstid=L.firstid Group by L.lastid,f.firstid
参考技术A 参考这个:

--1. 创建处理函数
CREATE FUNCTION dbo.f_strUnite(@id varchar)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + value FROM tabname WHERE user=@id
RETURN STUFF(@str, 1, 1, '')
END
GO
-- 调用函数
SELECt user, tfbm= dbo.f_strUnite(user) FROM user GROUP BY user

sqlserver数据库查询数据

数据查询-列别名
//使用AS来命名列
SELECT SCode AS 学生编号,SName AS 学生姓名, SAddress AS 学生地址 FROM Students WHERE SAddress <> ‘河南新乡‘
//使用=来命名列
SELECT 姓名 = FirstName+‘.‘+LastName FROM Employees
注意:
1. + 连接的数据类型必须兼容
2. 如果 + 连接字符型数据,结果为字符串数据的连接
3. 如果 + 连接数值型数据,结果为数值的和


数据查询-限制行数
//限制固定行数
SELECT TOP 5 SName, SAddress FROM Students WHERE SSex = 0
//返回百分之多少行
SELECT TOP 20 PERCENT SName, SAddress FROM Students WHERE SSex = 0

 

 

查询单列排序
//升序排列
SELECT StudentID AS 学生编号,(Score*0.9+5) AS 综合成绩 FROM Score WHERE (Score*0.9+5)>60 ORDER BY Score
//降序排列
SELECT StudentID,Score FROM Score ORDER BY Score DESC
//按多列排序
SELECT StudentID AS 学生编号, CourseID AS 课程ID, Score AS 成绩 FROM Score WHERE Score > 60 ORDER BY CourseID, Score




















以上是关于sqlserver 查询结果列组成字符串的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver数据库查询数据

SqlServer数据库《二》

如何在sqlserver中获取表的所有列信息

将一对多字符串结果作为组合查询中的列

sqlserver中将查询结果拼接成字符串

如何在sqlserver中获取表的所有列信息