Я создал отчет SSRS с двумя отдельными наборами данных и имею отдельную таблицу для каждого набора данных. Оба набора данных обращаются к одним и тем же таблицам базы данных в SQL Server.
Dataset1 содержит детали, исключающие некоторые учетные записи.
Dataset2 содержит данные для исключенных учетных записей.
Идея заключалась в том, чтобы при экспорте в Excel каждая таблица находилась на отдельной рабочей таблице.
Вопрос:
Вместо того, чтобы писать один и тот же код дважды (один раз для каждого набора данных), есть ли способ написать код один раз (и, следовательно, обработать только один раз) и сделать так, чтобы каждый набор данных обращался только к части этого кода? *
Мой код для наборов данных выглядит следующим образом:
Dataset 1:
===============
SELECT AccountNumber
,Field 2
,Field 3
INTO #temp_table1
FROM MainTable
WHERE Condition1 AND condition2 AND condition3
-----------------------------------------------------------
SELECT AccountNumber
INTO #temp_table2
FROM MainTable
WHERE Condition4 AND condition5
-----------------------------------------------------------
SELECT AccountNumber
,Field 2
,Field 3
FROM #temp_table1
WHERE AccountNumber NOT IN (SELECT AccountNumber FROM #temp_table2)
И вот код для набора данных 2:
Dataset 2:
===============
SELECT AccountNumber
,Field 2
,Field 3
INTO #temp_table1
FROM MainTable
WHERE Condition1 AND condition2 AND condition3
-----------------------------------------------------------
SELECT AccountNumber
,Field 2
,Field 3
INTO #temp_table2
FROM MainTable
WHERE Condition4 AND condition5
-----------------------------------------------------------
SELECT AccountNumber
,Field 2
,Field 3
FROM #temp_table1
WHERE AccountNumber IN (SELECT AccountNumber FROM #temp_table2)
-- The only thing that changes in this code is that I have removed the NOT and only kept IN.
Возможное решение:
SELECT AccountNumber
,Field 2
,Field 3
INTO #temp_dataset1
FROM #temp_table1
WHERE AccountNumber NOT IN (SELECT AccountNumber FROM #temp_table2)
SELECT AccountNumber
,Field 2
,Field 3
INTO #temp_dataset2
FROM #temp_table1
WHERE AccountNumber IN (SELECT AccountNumber FROM #temp_table2)
Набор данных 1:
SELECT * FROM #temp_Dataset1
Набор данных 2:
SELECT * FROM #temp_Dataset2
Есть предложения?