sql - 如何将多行合并为一而不重复
问题描述
我的表有名称和标识号,虽然标识号相同,但有时名称拼写不同。它看起来像这样:
no_ Name
1 cat
1 cat
2 dog
2 dog
2 dg
3 rat
我已经尝试过了,但它不会删除重复项
SELECT Main.no_,
LEFT(Main.gls,Len(Main.gls)-1) As "gls"
FROM
(
SELECT DISTINCT GL2.no_,
(
SELECT GL1.name + ',' AS [text()]
FROM dbo.gl GL1
WHERE GL1.no_ = GL2.no_
ORDER BY GL1.no_
FOR XML PATH ('')
) [gls]
FROM dbo.gl GL2
) [Main]
我希望它看起来像这样:
no_ Name
1 cat
2 dog,dg
3 rat
解决方案
您可以尝试使用 cte 和 string_agg()
with glcte(no_, Name) as
(
select no_, Name
from gl
group by no_, Name
)
select no_, string_agg(Name, ",")
from glcte
group by no_
推荐阅读
- android - Android Wifi 扫描仪未在列表视图中显示结果
- aframe - Aframe弹药物理如何设置弹性或恢复?
- blockchain - 从其他区块链集成到 Chainlink
- reactjs - 使用 Gatsby Link 导航到 MDX 渲染页面
- c++ - SFINAE 确定函数是否编译?
- django - 根据 django 的情况,是否可以让模型引用许多其他模型?
- r - 将 {.tabset} 与 bookdown::bs4_book() 一起使用
- xcode - 如何在命令行 xcode 构建中排除特定架构
- flexbox - Quasar Grid 左对齐最后一行的项目
- amazon-web-services - 从 AWS RDS 实例访问从 AWS RDS 快照导出到 S3 的数据库数据