使用表与收件人的存储过程

时间:2016-08-22 15:16:16

标签: sql-server reporting-services

我有一个表我想拆分并通过电子邮件发送给该部门的相应工作人员,我有两个表,表1包含所有针对部门的交易数据并且是实时的,表2是静态的,基本上列出了工作人员负责每个部门的成员。

我需要按部门拆分表1然后从table2查找相应职员的电子邮件并发送拆分表。

表1:

| Customer | ? | Department
| Customer | ? | Department1
| Customer | ? | Department2

表2:

| Department  | Staff  | Email
| Department1 | Staff1 | Email
| Department2 | Staff2 | Email

我想知道,是否可以创建存储过程来执行此操作,或者我是否必须为每个工作人员在SSRS中创建订阅?

谢谢,

尼尔

1 个答案:

答案 0 :(得分:1)

我完全建议制作简单的SSRS报告并通过数据驱动订阅进行分发。以下查询将帮助您开始使用数据摘录,您可以按照指南here了解如何设置SSRS数据驱动订阅。

创建它们非常简单,只需要一个订阅就可以向每个部门发送电子邮件,并且它们很容易维护,即使是其他人也不知道它的作用。

declare @t1 table(Cust nvarchar(100)
                ,Cols nvarchar(100)
                ,Dept nvarchar(100)
                )
declare @t2 table(Dept nvarchar(100)
                ,Staff nvarchar(100)
                ,Email nvarchar(100)
                )

insert into @t1 Values
 ('Customer','?','Department1')
,('Customer','?','Department2')
,('Customer','?','Department3')

insert into @t2 Values
 ('Department1','Staff1','Email1')
,('Department2','Staff2','Email2')
,('Department3','Staff3','Email3')


-- Use this query in your Data Driven Subscription to generate the list of Departments and their respective Emails:
select distinct t1.Dept
                ,t2.Email
from @t1 t1
    left join @t2 t2
        on(t1.Dept = t2.Dept)

-- Then use this query in your report to list out the contents of Table 1, matching the @SSRSDeptParameter value in the Data Driven Subscription options.
select t1.Cust
        ,t1.Cols
        ,t1.Dept
        ,t2.Email
from @t1 t1
    left join @t2 t2
        on(t1.Dept = t2.Dept)
where @t1.Dept = @SSRSDeptParameter