2016-08-22 2 views
1

У меня есть таблица, которую я хотел бы разделить и отправить по электронной почте соответствующему сотруднику этого отдела, у меня есть две таблицы, в таблице 1 указаны все данные транзакции по отделу и в реальном времени, таблица 2 static, в котором, по существу, указывается сотрудник, который отвечает за каждый отдел.Сохраненная процедура с использованием таблицы с получателями

Мне нужно разделить таблицу 1 по Департаменту, затем найти электронное письмо для соответствующего сотрудника из таблицы2 и отправить таблицу разделения.

Таблица 1:

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

Table2:

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

мне было интересно, возможно ли было бы создать хранимую процедуру, чтобы сделать это или я должен создать подписку на SSRS для каждый отдельный сотрудник?

Спасибо,

Нил

+1

Определенно возможно – scsimon

+0

haha ​​thanks Scsimon, теперь как бы это сделать? –

+0

Есть несколько способов, которыми вы могли бы это сделать, я полагаю. Первый вопрос, который необходимо решить, будет ли запуск отчета один раз в день, на основе adoc, пользователем или автоматическим? и т. д. Все, что нужно учитывать. Вы можете ограничить результаты таблицы1 с помощью Таблицы 2, конечно, простым соединением и использовать 'sp_send_dbmail' для отправки набора результатов. Или вы можете установить подписку в SRRS с параметром, который является идентификатором/именем персонала, если вам нужны результаты, отформатированные определенным образом. – scsimon

ответ

1

Я бы тщательно рекомендую сделать простой отчет SSRS и его распространение через Driven данных подписки. Запросы ниже помогут вам начать работу над вашими выдержками, и вы можете обратиться к руководству 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 
+0

Спасибо Дэйв, к сожалению, версия SSRS, которую мы используем, не имеет подписчиков, основанных на данных, поэтому нам просто нужно полагаться на SP. –

+1

@NeilNorris Немного просрочка обновления? Что мешает вам обновить версию SQL? – iamdave

+0

ИТ-отдел - это боль. Понятно, что я должен создать основную таблицу со всеми данными рядом с соответствующим адресом электронной почты сотрудников, тогда все, что мне нужно сделать, - это как-то заставить SP разбить таблицу на своих сотрудников и отправить им соответствующий раздел. –

Смежные вопросы