Sql 在select和其他列中指定变量值

Sql 在select和其他列中指定变量值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我知道,您可以通过执行select为select中的变量赋值 SELECT @blahBlah = (tbl.ProductGroup) FROM tbl 好的,现在我需要做的是如下 每个账户/用户每天都有一定数量的交易;账户1可以做5笔交易,账户2可以做3笔交易 因此,在一个select中,将确定此帐户是否超出其限制以及超出多少,我们有许多inSelect计算来生成列数据 问题是,我们现在有大约4列,每个列将执行嵌套选择,从另一个表中获取限制,以便为当前表生成一个值 理想的做法是将这些限制

我知道,您可以通过执行select为select中的变量赋值

SELECT @blahBlah = (tbl.ProductGroup) 
FROM tbl
好的,现在我需要做的是如下

每个账户/用户每天都有一定数量的交易;账户1可以做5笔交易,账户2可以做3笔交易

因此,在一个select中,将确定此帐户是否超出其限制以及超出多少,我们有许多
inSelect
计算来生成列数据

问题是,我们现在有大约4列,每个列将执行嵌套选择,从另一个表中获取限制,以便为当前表生成一个值

理想的做法是将这些限制分配给select语句中的
@变量
,并在需要时仅在所述语句中引用该变量

举一个简单的例子(不是实际的逻辑):

你明白了

有什么方法可以做到这一点吗?

是的,你可以用a来做这类事情。以下是您可以调整以使其适用于您的案例的基本想法:

;WITH limtis AS
(
   SELECT Limit, ClientId
   From tClient 
   Where tClient.clientId = tbl.ClientId
)
select ...
from batch
INNER JOIN Limtis On ...
WHERE ...

希望你了解情况。

试试这样的方法

select clientid from tClient as t1 inner join batch as t2
 on t1.clientId=t2.clientId
 group by clientId
 having sum(batchItemCount)>sum(limit)
select clientid from tClient as t1 inner join batch as t2
 on t1.clientId=t2.clientId
 group by clientId
 having sum(batchItemCount)>sum(limit)