Как мне объявить строки данных
У меня есть длинный код, который создает данные финансового учета.
Код использует несколько объединений для разделения данных на различные группы компаний.
Есть 5-6 групп счетов, которые являются ссылочными несколько раз.
Каждый раз, когда происходит изменение группировок, я должен пройти через код и изменить его в каждом месте.
Пример строки приведен ниже:
Where account in ('81000', '82000','87000','83600','67000')
and account like '814%'
Есть ли способ поместить это в объявление или просто внутреннюю ссылку на этот код в других операторах where?
1 ответ
Есть несколько способов сделать то, что вы описываете, что лучше всего будет зависеть от ваших конкретных потребностей.
Первое и самое простое - использовать переменные.
declare @account1 int; set @account1 = 81000;
declare @account2 int; set @account2 = 82000;
declare @account3 int; set @account3 = 87000; /* and so forth*/
Из вашего вопроса не ясно, вызывается ли это из внешнего интерфейса, если это так, вы можете использовать параметры sql для установки значений учетной записи.
string cmd =' declare @account1 int; set @account1 = @acount1In;
select columnslist from accounts where account in (@account1)
union
select columnslist from accounts where account in (@account1)
';
Во-вторых, вы можете поместить значения во временную таблицу или табличную переменную.
declare @accountIds table (account int);
insert into @accountIds values(81000);
select columnlist from accounts where account in (select account from @accounts);
Наконец, если это действительно одно и то же выражение, выполненное несколько раз, вы можете рассмотреть возможность использования общего табличного выражения.
;using cte as (select columnlist from accounts where account in (81000, 87000)
)
select columnlist from cte inner join table2 on a=b
union
select columnlist from cte inner join table3 on a=c