1、首先是学生表中有ClassId这一列,最终先展示效果大至如:12,13,14的结果,底下有两种做法可参考:
- 利用sql语言 xml path做
select parentId=(select ParentId from Organization where Id=586), ClassId=isnull ( ( select temp.ClassId from ( select ClassId=stuff ( ( select ','+Convert(nvarchar(10),ClassId,120) from Class where OgId=586 and Grade=2011 for xml path('') ), 1, 1, '' ) from Class where OgId=586 and Grade=2011 ) temp group by temp.ClassId ),'' )
- 利用函数去做
/****** 对象: UserDefinedFunction [dbo].[GetClassIdByStuId] 脚本日期: 04/14/2012 19:08:30 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE function [dbo].[GetClassIdByStuId] (@StuID INT) --实现spilt功能 的函数 --date :2003-10-14 returns nvarchar(4000) AS begin DECLARE @temp VARCHAR(4000) SET @temp='' SELECT @temp =( CASE WHEN @temp ='' THEN CAST(ClassId as varchar) ELSE @temp+','+ CAST(ClassId as varchar) END ) FROM ClassStuInfo WHERE ClassStuInfo.StuId=@StuID RETURN @temp end
上面写的很清楚,希望对大家有用!