Похоже, что весь запрос можно упростить до:
select
periode,
konto_nr as ktonr,
konto_kurztext as ktobez,
soll_periode - haben_periode as SaldoMonat,
soll_saldo - haben_saldo as SaldoJahr
into #temp_trans_13
from sap_SuSa_liste
where
Jahr = :jahr
and periode in (12,13,14)
and buchungskreis = :bkr
and konto_nr between '200000' and '999999'
UNION
возвращает различные значения, что означает, что даже если бы оптимизатор запросов SQL Server был достаточно умен, чтобы избежать выполнения N запросов, он бы все же необходимо отсортировать и сгруппировать данные для устранения дубликатов.
Если необходимо удалить дубликаты, можно добавить DISTINCT
к предложению SELECT
Временные таблицы
Временные таблицы являются временными.Они существуют только на время одного соединения.Те, которые имеют один префикс #
, видны только соединению, которое их создало.
Ошибка invalid table name #Temp_trans_13
может возникнуть только в том случае, если другой запрос попытается использовать эту таблицу и не сможет ее найти, либо потому, что она еще не была создана, либо потому, что она была создана вдругое соединение.
Чтобы использовать временную таблицу из другого соединения, необходимо создать глобальную временную таблицу с использованием ##
в качестве префикса.