gpt4 book ai didi

sql - COALESCE 是实现这一目标的最佳方式吗?

转载 作者:行者123 更新时间:2023-12-04 16:56:43 26 4
gpt4 key购买 nike

只是想看看是否有人有更好的方法来完成我所需要的。

先来个背景。我的数据库中有一个表,目前大约有 20,000 行。在表中,我们有一列用于 FirstName 和 LastName。还有一列是 ReferenceID。每个 ReferenceID 可以有多个 FirstName、LastName 组合。

这意味着当我们从表中执行 select * 时,我们会为每个 ReferenceID 返回多行(因为每个用户都有一行)。

我想将这两列连接到一个名为 Name 的列中,同时将每一行作为 ReferenceID 并将其变成一行。 (基本上展平数据)。

让我试着在这里画一个ascii图。

TABLE
ID ReferenceID FirstName LastName
________________________________________________
1 1 Mike Ekim
2 1 Tom Mot
3 1 Pete Etep
4 2 Ryan Nayr
5 3 Jerry Yrrej

所以我想要的最终结果是一个集合,例如
RESULT SET
ReferenceID Name
__________________________________
1 Mike Ekim, Tom Mot, Pete Etep
2 Ryan Nayr
3 Jerry Yrrej

我真正需要知道的是,在我开始使用 COALESCE 并尝试调整我的结果之前,有没有更好的方法来实现这一目标?使用 SQL Server 2005。

干杯,

麦克风

最佳答案

以下是使用 xml 路径技术的方法(其中也有合并...)

SELECT DISTINCT n.ReferenceID,
STUFF((SELECT ', ' + COALESCE(n2.FirstName+' '+n2.LastName,n2.FirstName,n2.LastName,'NoName')
FROM namelist n2
WHERE n.referenceid = n2.referenceid
ORDER BY n2.lastname, n2.firstname
FOR XML PATH('')
), 1, 2, '') AS [Name]
FROM namelist n

关于sql - COALESCE 是实现这一目标的最佳方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2053273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com