我知道您可以通过转到
为选择中的变量赋值SELECT @blahBlah = (tbl.ProductGroup)
FROM tbl
好的,现在我需要做的是如下。
每个帐户/用户每天都有一定数量的交易;例如。帐户1可以执行5笔交易,帐户2可以执行3笔交易。
因此,在一个选项中,将确定此帐户是否超出其限制以及数量,我们有许多inSelect
计算来生成列数据。
问题是我们现在有大约4列,每个列都会进行嵌套选择以从另一个表中获取限制,以便为当前表生成一个值。
理想的是将这些限制分配给select语句中的@variable
,并且只在需要时引用该语句中的该变量。
举一个简短的例子(不是实际逻辑):
SELECT
@Limit = (SELECT Limit From tClient Where tClient.clientId = tbl.ClientId),
(select count(*) from batch where batchItemCount > @limit) AS BadBatches,
....
FROM TBL
你明白了。
有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
是的,您可以使用Common Table Expression(CTE)来执行这些操作。以下是您可以调整以使其适用于您的案例的基本想法:
;WITH limtis AS
(
SELECT Limit, ClientId
From tClient
Where tClient.clientId = tbl.ClientId
)
select ...
from batch
INNER JOIN Limtis On ...
WHERE ...
希望你能得到这张照片。
答案 1 :(得分:0)
尝试这样的事情
select clientid from tClient as t1 inner join batch as t2
on t1.clientId=t2.clientId
group by clientId
having sum(batchItemCount)>sum(limit)