我有一行打印出客户的所有联系信息(姓名,行业,网站名等)。有两个字段“电话”和“电子邮件地址”这两个字段都由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
答案 0 :(得分:0)
您可以创建两个派生查询(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
答案 1 :(得分:0)
最简单的方法可能是对结果进行分组并选择非空字段。
select TicketID, Name, max(Phone) as Phone, max(Email) as Email
from YourTable
group by TicketID, Name