Как мне объявить строки данных

У меня есть длинный код, который создает данные финансового учета.

Код использует несколько объединений для разделения данных на различные группы компаний.

Есть 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
Другие вопросы по тегам