首页 > 解决方案 > 需要将当前行的 id 传递给 SQL 中的查询

问题描述

我有这个查询需要根据 branchId 为每一行输出 ActiveAgents。现在确定如何使它与 branchId 一起工作。当我在查询中使用它时,它会为所有行返回 1 amouth,但是当我单独尝试它并像这样传递 branchId 时,它可以工作。

    …….
 ,(select Count(*)  from [TblAgencyContact] agent 
   left join [TblBranchMember] branchMember on agent.AgencyContactId = branchMember.AgencyContactId
                                                left join [TblBranch]branch  on branch.BranchId = branchMember.BranchId
                                               where agent.StatusId = 1 and branchMember.BranchId = branch.BranchId and 
                                               branchMember.BranchId = branch.BranchId) as ActiveAgents
,……

 from [TblBranch]branch  

我不知道如何BranchId在查询中将当前行传递给它。

select 
    Count(*)  
from 
    [TblAgencyContact] agent 
left join 
    [TblBranchMember] branchMember on agent.AgencyContactId = branchMember.AgencyContactId
left join 
    [TblBranch] branch on branch.BranchId = branchMember.BranchId
where 
    agent.StatusId = 1 
    and branchMember.BranchId = branch.BranchId 
    and branchMember.BranchId = branch.BranchId 
    and branch.BranchId = 81

标签: sqlsql-server

解决方案


您的顶级查询已接近,但您需要记住您不需要在 TblBranch 表上加入,因为您正在将适当的值传递给子查询。另外,链接不应该是 INNER JOIN 吗?如果 TblBranchMember 表中没有人,您就不想计算 TblAgencyContact 行,对吗?

(
    select Count(*)
    from [TblAgencyContact] agent 
    INNER join [TblBranchMember] branchMember 
        on agent.AgencyContactId = branchMember.AgencyContactId
    where agent.StatusId = 1 
        and branchMember.BranchId = branch.BranchId -- where branch is accessed in the outer query
) as ActiveAgents

推荐阅读