如何声明数据字符串

时间:2013-10-12 14:56:46

标签: sql sql-server-2008 declare

我有一个很长的代码,正在创建财务会计数据。

该代码使用多个联盟将数据分成不同的公司分组。

有5-6个帐户分组多次引用。

如果分组发生变化,我必须通过代码并在每个位置进行更改。

字符串的示例如下:

Where account in ('81000', '82000','87000','83600','67000') 
and account like '814%'

无论如何将它放在声明中或只是在其他where语句中内部链接到该代码?

1 个答案:

答案 0 :(得分: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