首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何声明数据字符串

如何声明数据字符串
EN

Stack Overflow用户
提问于 2013-10-12 22:56:46
回答 1查看 38关注 0票数 0

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

代码使用多个联合将数据分解到不同的公司分组。

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

每当分组发生变化时,我必须遍历代码并在每个位置对其进行更改。

该字符串的示例如下:

代码语言:javascript
复制
Where account in ('81000', '82000','87000','83600','67000') 
and account like '814%'

有没有办法把它放在一个声明中,或者只是在内部链接到其他where语句中的代码?

EN

回答 1

Stack Overflow用户

发布于 2013-10-12 23:52:13

有几种方法可以做你所描述的事情,哪一种最好取决于你的确切需求。

首先,也是最简单的方法是使用变量。

代码语言:javascript
复制
declare @account1 int; set @account1 = 81000;
declare @account2 int; set @account2 = 82000;
declare @account3 int; set @account3 = 87000; /* and so forth*/

从你的问题中不清楚这是否是从前端应用程序调用的,如果是,你可以使用sql参数来设置帐户值。

代码语言:javascript
复制
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)
            ';

其次,您可以将值放入临时表或表变量中。

代码语言:javascript
复制
declare @accountIds table (account int);
insert into @accountIds values(81000);

select columnlist from accounts where account in (select account from @accounts);

最后,如果这确实是多次执行的相同表达式,则可以考虑使用通用表表达式。

代码语言:javascript
复制
;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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19335540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档