Tsql 如何在SQL Server中为以下场景创建函数

Tsql 如何在SQL Server中为以下场景创建函数,tsql,sql-server-2012,Tsql,Sql Server 2012,我需要创建一个返回字符串的函数。函数的输入是studentid: 表格格式如下: studentid subname subid ------------------------------ 1 math 2 1 sci,xx 3 1 social 1 函数输入为studentid,应按上述子ID排序,函数应返回字符串social~math~sci,xx 有人能给个主意吗 select

我需要创建一个返回字符串的函数。函数的输入是studentid:

表格格式如下:

studentid  subname    subid 
------------------------------
1          math         2
1          sci,xx       3
1          social       1  
函数输入为studentid,应按上述子ID排序,函数应返回字符串social~math~sci,xx

有人能给个主意吗

select 
    T1.studentid,
    stuff((select '~' + T2.subname
           from Studenttable as T2
           where T1.studentid = T2.studentid
           for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as subname
from 
    Studenttable as T1
group by 
    T1.studentid   

如何将上述逻辑转换为studentid作为i/p,以便按函数中的子ID按表顺序排列?

这是家庭作业吗?显示您已尝试的内容。选择T1.studentid,填充从Studenttable中选择“~”+T2.subname作为T2,其中T1.studentid=T2.studentid作为xml路径,键入.value'',varcharmax',1,1,作为子名称从Studenttable中作为T1组由T1生成。studentid如何生成,其中一个studentid为i/p,按子ID排序
select 
    T1.studentid,
    stuff((select '~' + T2.subname
           from Studenttable as T2
           where T1.studentid = T2.studentid
           for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as subname
from 
    Studenttable as T1
group by 
    T1.studentid