#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. Я обновляю ответ на случай, если вы в настоящее время используете сохраненные процедуры, и это то, что вас сдерживает.