您的位置:首页 > 数据库

通过Sql实现根据分组合并指定列内容的查询

2015-07-14 16:01 411 查看
问题:  最近在做一个项目的时候,遇到这样一个要求,模拟要求如下: 
<pre name="code" class="html">
<pre name="code" class="sql">ID  SName张三李四刘六王五要的结果是ID name张三,李四刘六,王五即按ID组查询,并将相同的ID对应SName内容通过逗号合并
解决思路:  通过传递不同的id给函数,查询出组合的SName并返回。
--创建测试表IF NOT EXISTS(SELECT * FROM sysobjects WHERE id=OBJECT_ID(N'StudentsInfo') AND OBJECTPROPERTY(id,N'IsUserTable')=1)CREATE TABLE StudentsInfo(Id INT,SName NVARCHAR(20))GO--添加测试数据INSERT INTO StudentsInfo VALUES (1,'张三')INSERT INTO StudentsInfo VALUES (1,'李四')INSERT INTO StudentsInfo VALUES (2,'刘六')INSERT INTO StudentsInfo VALUES (2,'王五')GO--创建函数IF EXISTS(SELECT * FROM sysobjects WHERE id=OBJECT_ID(N'GetStudentsInfoNamesByID') AND OBJECTPROPERTY(id,N'IsScalarFunction')=1)DROP FUNCTION GetStudentsInfoNamesByIDGOCREATE FUNCTION GetStudentsInfoNamesByID(@Id INT)RETURNS NVARCHAR(4000)ASBEGINDECLARE @SNames NVARCHAR(4000)SET @SNames = ''SELECT @SNames = @SNames+','+SName FROM StudentsInfo WHERE id = @IdRETURN STUFF(@SNames,1,1,'')ENDGO--查询SELECT id,dbo.GetStudentsInfoNamesByID(id) AS SNames FROM StudentsInfo GROUP BY id
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: