重复记录的合并列值[重复]

Posted

技术标签:

【中文标题】重复记录的合并列值[重复]【英文标题】:merger column value of duplicate records [duplicate] 【发布时间】:2021-12-27 13:12:29 【问题描述】:

我有一个向我返回记录的查询,当它找到超过 1 个值时记录重复

我想合并重复的记录,但我不知道如何

我听说过聚合函数,我应该朝这个方向发展吗?我真的不知道该怎么做

SELECT distinct LCM.eFolderID, LCM.ContractNumber
        ,(bU.FirstName + ' ' + bU.Surname) as WeryfikacjaUmowa
        --,COUNT(LCM.ContractNumber)
  FROM Metastorm.dbo.LeasingContractsMap LCM with(nolock)
  left join Metastorm.dbo.eEvent eE with(nolock) on eE.eFolderID = LCM.EFOLDERID and eE.eActionName = 'AssignToContractVerificationAct'
  left join Metastorm.dbo.bpm_Users bU with(nolock) on bU.eUserName = eE.eUserName
  where LCM.ContractNumber not like '%purged%'
  and LCM.ContractNumber = '37/1276/20'

结果

我想要的结果

【问题讨论】:

Bad habits : Putting NOLOCK everywhere 【参考方案1】:

在sql server中使用group by时,可以使用string_agg聚合字符串列。

试试这个:

with u as
(SELECT distinct LCM.eFolderID, LCM.ContractNumber
            ,(bU.FirstName + ' ' + bU.Surname) as WeryfikacjaUmowa
            --,COUNT(LCM.ContractNumber)
      FROM Metastorm.dbo.LeasingContractsMap LCM with(nolock)
      left join Metastorm.dbo.eEvent eE with(nolock) on eE.eFolderID = LCM.EFOLDERID and eE.eActionName = 'AssignToContractVerificationAct'
      left join Metastorm.dbo.bpm_Users bU with(nolock) on bU.eUserName = eE.eUserName
      where LCM.ContractNumber not like '%purged%'
      and LCM.ContractNumber = '37/1276/20')
select eFolderID, ContractNumber, string_agg(WeryfikacjaUmowa, ' ') as WeryfikacjaUmowa
from u 
group by eFolderID, ContractNumber

【讨论】:

" 'string_agg' 不是可识别的内置函数名。" @Michael 你用的是什么版本的sql server?

以上是关于重复记录的合并列值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果所需的列值重复 [重复],则 SQL 查询以获取顶部记录

如何在 BigQuery 中取消嵌套重复记录,一个数组给出列名,另一个给出列值?

从具有重复列值的集合中选择第一条记录 C#

将重复记录合并到 pyspark 数据框中的单个记录中

通过采用 MySQL 中的最低列值“合并”两行 [重复]

c#中同一个Datatable中的如何把重复的记录合并起来,