标签:otto 级别 连接 保留 标题 一对多 开始 distinct string
[鉴于indexing随着数据集规模的增加,这一点非常重要,有人可以解释一下如何在一个database-agnostic级别上进行索引工作?
当我试图用一对多关系连接两个表时,我遇到了类似的问题。在SQL 2005中,我发现该XML PATH方法可以很容易地处理行的连接。
如果有一个表叫?STUDENTS
SubjectID StudentName ---------- ------------- 1 Mary 1 John 1 Sam 2 Alaina 2 Edward
我预期的结果是:
SubjectID StudentName ---------- ------------- 1 Mary, John, Sam 2 Alaina, Edward
我使用了以下内容T-SQL:
Select Main.SubjectID, Left(Main.Students,Len(Main.Students)-1) As "Students" From ( Select distinct ST2.SubjectID, ( Select ST1.StudentName + ‘,‘ AS [text()] From dbo.Students ST1 Where ST1.SubjectID = ST2.SubjectID ORDER BY ST1.SubjectID For XML PATH (‘‘) ) [Students] From dbo.Students ST2 ) [Main]
如果您可以在开始时对逗号进行连接并使用substring跳过第一个逗号,那么您可以以更紧凑的方式执行相同的操作,因此不需要执行子查询:
Select distinct ST2.SubjectID, substring( ( Select ‘,‘+ST1.StudentName AS [text()] From dbo.Students ST1 Where ST1.SubjectID = ST2.SubjectID ORDER BY ST1.SubjectID For XML PATH (‘‘) ), 2, 1000) [Students] From dbo.Students ST2
?
如何将多行中的文本连接成SQL服务器中的单个文本字符串String?
标签:otto 级别 连接 保留 标题 一对多 开始 distinct string
原文地址:https://www.cnblogs.com/breakyizhan/p/13286358.html