标签: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