【问题标题】:SQL concatenation of Identical rows相同行的 SQL 连接
【发布时间】:2015-10-05 00:22:42
【问题描述】:

我有一行打印出客户的所有联系信息(姓名、行业、站点名称等...)。有 2 个字段“电话”和“电子邮件地址”,这两个字段都由 rec_ID 访问。 1 用于电话,2 用于电子邮件。所以在运行时它会打印出两行相同的信息。第一行的电话值为空,但打印电子邮件,该行的第二个实例具有电话号码,但电子邮件为空。所以我做了一个摘要行,但它只是读取第一行并将其复制到摘要行。我需要设法在同一行打印电子邮件和电话号码。我不知道摘要行是否必要,或者是否有更好的方法来做到这一点。我只是不知道如何访问第二行,因为它与第一行相同,它只运行了两次。我将 BIDS SSRS 与我无法操作的预定义字段和表一起使用。

当前输出如下:

TicketID: Name: Phone: Email: 
  123       Ben    555   
  123       Ben          Ben@mail.com

我希望它像这样组合和输出:

 TicketID: Name: Phone: Email: 
  123       Ben    555   Ben@mail.com

【问题讨论】:

  • 您可能应该使用 subselect 来检索一行中的电话号码和电子邮件。您现在使用什么查询?
  • 哪种类型的 SQL(Oracle、SQL-Server 等)?另外,请显示您当前的查询,它返回什么数据以及您希望它返回什么。将其添加到您的问题中将使您更容易理解您想要什么以及如何最好地做到这一点。
  • 请格式化您的问题您尝试过的查询是什么以及您的表格的预期结果
  • 我正在使用 Microsoft Visual Studio

标签: sql concatenation string-concatenation summary


【解决方案1】:

您可以创建两个派生查询(1 个用于电话,1 个用于电子邮件)并使用完全连接将它们连接在一起。下面有一个例子:

declare @test table(ticketid int,rec_id int, name varchar(20), phone varchar(20), email varchar(20))

insert into @test(ticketid, rec_id, name, phone, email) values (1, 1, 'Ben', '123456', null)
insert into @test(ticketid, rec_id, name, phone, email) values (1, 2, 'Ben', null, 'test@test.com')
insert into @test(ticketid, rec_id, name, phone, email) values (2, 3, 'Ben', null, 'test2@test.com')

select phones.phone, emails.email, emails.name from 
(select ticketid, 
        rec_id, 
        phone, 
        email,
        name
from @test 
where phone is not null) phones
full join 
    (select 
        ticketid, 
        rec_id, 
        phone, 
        email,
        name
    from @test 
    where email is not null) emails
on phones.ticketid = emails.ticketid

【讨论】:

    【解决方案2】:

    执行此操作的最简单方法可能是将结果分组并选择非空字段。

    select TicketID, Name, max(Phone) as Phone, max(Email) as Email
    from YourTable
    group by TicketID, Name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2016-05-12
      • 2016-02-23
      • 2023-03-16
      • 2015-09-18
      • 2016-03-24
      相关资源
      最近更新 更多