【问题标题】:Concatenate Rows with Group By Clause in SQL Server 2008在 SQL Server 2008 中使用 Group By 子句连接行
【发布时间】:2019-07-13 07:46:40
【问题描述】:

下面是 SQL 查询。以及我从中得到的输出。我已经提供了所需的输出。请帮助我做错了什么。

select drp.vendorid,drp.GuaranteeType,drp.Guarantee_Enable,drp.Advance_Required,rtypes=stuff(
(select distinct '~' + rate_plan_type_id from ds_rate_plan drp2 where drp2.rate_plan_id = drp.rate_plan_id for xml path('')),1,1,'')
from ds_rate_plan drp
where drp.vendorid in ('00072211','00000004','00000001')
group by vendorid,drp.GuaranteeType,drp.Guarantee_Enable,drp.Advance_Required,drp.rate_plan_id

以下是我得到的输出:

以下是所需的输出:

00000001    PrePay   false   false   B2C~CPT~FPH~MOR

编辑(按要求): 表和所需的输出。你们现在可以帮忙吗?

【问题讨论】:

  • 以文本形式发布表格和数据READ THIS
  • 向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
  • 您没有提供样本数据。但根据您的输出,您只需要 GROUP BY vendorid

标签: sql sql-server-2008 group-by concatenation


【解决方案1】:

你的关联子句应该是vendorid,而不是rate_plan_type_id

select drp.vendorid, drp.GuaranteeType, drp.Guarantee_Enable, drp.Advance_Required,
       stuff( (select distinct '~' + drp2.rate_plan_type_id
               from ds_rate_plan drp2
               where drp2.vendorid = drp.vendorid
               for xml path('')
              ), 1, 1, ''
            ) as rtypes
from (select distinct drp.vendorid, drp.GuaranteeType, drp.Guarantee_Enable, drp.Advance_Required
      from ds_rate_plan drp
      where drp.vendorid in ('00072211', '00000004', '00000001')
     ) drp

【讨论】:

  • 这确实给了我想要的输出,但数据不正确。因为 vendorid 上的相关子句不是唯一的。我使用 rate_plan_id 因为它是独一无二的。有什么建议吗?
【解决方案2】:

你可以试试下面的方法

DECLARE @temp TABLE (vendorid int,rtype NVARCHAR(50));
INSERT INTO @temp (vendorid,rtype)
VALUES (1,'B2C'),(1,'B2C'),(1,'B2C'),(1,'CPT');


with cte as
(
select distinct * from @temp
) select distinct vendorid,STUFF((
        SELECT ',' +  rtype
        FROM cte t1
        where t1.vendorid = t2.vendorid
        FOR XML PATH('')
    ), 1, 1, '') AS Places from cte t2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2013-04-18
    • 1970-01-01
    • 2014-08-24
    相关资源
    最近更新 更多