Привязать данные из 2 наборов данных к одному табликсу в SSRS

#reporting-services #dataset #ssrs-2012 #ssrs-tablix

#службы отчетов #набор данных #ssrs-2012 #ssrs-табликс

Вопрос:

Мне нужно объединить данные из 2 разных наборов данных в один табликс, который должен быть отсортирован по дате и времени.

Например:
Dataset1:

 DateTime                      Product       Employee  
2020-08-13 18:10:53.263       ABC             A
  

Dataset2:

 DateTime                      Product       Employee  
2020-08-13 19:10:20.000       XYZ             A  
  

Результирующий набор:

 DateTime                      Product       Employee  
2020-08-13 18:10:53.263       ABC             A  
2020-08-13 19:10:20.000       XYZ             A 
  

Примечание: Я не могу объединить данные из обоих наборов данных на уровне базы данных, поскольку наборы данных относятся к двум разным источникам данных.

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

Не мог бы кто-нибудь, пожалуйста, подсказать, есть ли способ добиться этого.

Заранее благодарю вас!!

Комментарии:

1. Каковы источники данных? например, SQL Server и Oracle или SQL и CSV-файл и т.д.? «Может» быть способ обойти это, если я знаю, откуда берутся ваши данные?

2. @AlanSchofield : Оба источника данных взяты из баз данных SQL server (2 разные базы данных)

Ответ №1:

Если базы данных находятся на одном сервере, вы можете просто объединить результаты вместе примерно так

 SELECT [DateTime], [Product], [Employee]
    FROM [database_A].[mySchema].[myFirstTable]
UNION ALL
SELECT [DateTime], [Product], [Employee]
    FROM [database_B].[myotherSchema].[myOtherFirstTable]
  

Если они находятся на разных серверах, создайте связанный сервер (подробности о том, как это сделать, находятся здесь)

Затем используйте тот же запрос, но перед второй ссылкой укажите имя сервера / link server name

 SELECT [DateTime], [Product], [Employee]
    FROM [database_A].[mySchema].[myFirstTable]
UNION ALL
SELECT [DateTime], [Product], [Employee]
    FROM [myLinkedServerName].[database_B].[myotherSchema].[myOtherFirstTable]
  

Теперь у вас будет единый набор данных со всеми вашими данными и никакой головной боли!


Если у вас есть две существующие сохраненные процедуры


Если у вас два SP, вы все равно можете сделать это, но немного другим способом. Что-то вроде

 CREATE TABLE #t([DateTime] DateTime, Product varchar(50), Employee int)

INSERT INTO #t
    EXEC #myFirstProc

INSERT INTO #t
    EXEC #mySecondProc

SELECT * FROM #t
  

Комментарии:

1. Спасибо за ваш ответ. Да, мы можем сделать это на уровне базы данных. Но в моем случае мне нужно на уровне отчета, потому что мне требуется много времени для динамической реализации этого из кода, а у меня недостаточно времени. Пожалуйста, подскажите мне, есть ли у нас какая-либо возможность сделать это в отчете.

2. Насколько я знаю, я знаю, что нет способа сделать это напрямую в SSRS. Если вы выполните поиск по таким параметрам, как «SSRS UNION 2 datasets», вы увидите множество примеров того, как имитировать результаты, но ни один из них не даст вам ни одного табликса со всеми результатами, как вы ожидаете.

3. Я обновляю ответ на случай, если вы в настоящее время используете сохраненные процедуры, и это то, что вас сдерживает.