SQLserver创建视图时报错,使用了for xml path

没关系的,不用理这个错误,分析器的问题,继续就行了。可以当做正常视图来用,我这里2008的ssms提示的忽略,不是继续。

 

你这查询设计不合理,设计一个函数,id做参数,返回科目。

1-建立函数

CREATE FUNCTION dbo.func_Get_student_subjects(@id varchar(10)) 
RETURNS varchar(8000)   --返回返回值的数据类型
as
BEGIN
    declare @result_name varchar(8000)
    select @result_name=''
    select  @result_name =@result_name+case when @result_name='' then '' else '/' end+ trim(subject) from subject where id= @id
  RETURN  @result_name
End

2-查询

SELECT DISTINCT(a.id) as 学号,(a.name) as 姓名,(a.sex) as 性别,

dbo.func_Get_student_subjects( a.id) as 科目

from Student

或者

SELECT a.id 学号,(a.name) 姓名,(a.sex) 性别,

科目= stuff((SELECT   '/'+ b.Subject FROM Subject b WHERE b.id= a.id FOR xml path ('')) ,1, 1,'')

from Student a 

如有多行加这一句

group by a.id,a.name,a.sex