2014-12-31 3 views
0

SavingAccountTransactions 및 LoanAccountTransactions라는 테이블이 두 개 있습니다.여러 테이블의 레코드 수

테이블 모두 동일한 열 (fk_MemberId, fk_AgentId, TransactionDate)

샘플 데이터

SavingAccountTransactions 표

Id fk_MemberId fk_AgentId TransactionDate Amount 
--- ----------- ----------- --------------- ------- 
1  441    12   2014-12-30  100 
2  452    6   2014-12-30  300 

LoanAccountTransactions 표

Id fk_MemberId fk_AgentId TransactionDate Amount 
--- ----------- ----------- --------------- ------- 
1  441    12   2014-12-30  500 
2  452    6   2014-12-30  200 
,745가있는

SavingAccountTransactions 테이블과 LoanAccountTransactions 테이블을 결합하여 특정 멤버의 단일 행에 NoOfMembersVisited 수를 얻는 방법은 무엇입니까? 다음은

내가

select u.Fullname as AgentName ,count (distinct t.fk_MemberId) as NoOfMembersVisited 
from dbo.SavingAccountTransactions T 
inner join Users u on t.fk_AgentId=u.Id 
where t.TransactionDate = CAST(GETDATE() AS DATE)               
group by u.Fullname 
Union all 
select u.Fullname as AgentName, count (distinct l.fk_MemberId) as NoOfMembersVisited 
from LoanAccountTransactions L 
inner join Users u on L.fk_AgentId=u.Id 
where l.TransactionDate = CAST(GETDATE() AS DATE) 
group by u.Fullname 

예상 결과를 시도 쿼리입니다 :

당신은 당신이 점점 알고 어려운 어떤 샘플 데이터를 제공하지 않았기 때문에
AgentName NoOfMembersVisited 
--------- ------------------- 
John    2 
Kevin   1 

etc.... 
+0

테이블 스키마 및 샘플 데이터를 제공해주십시오. – dario

답변

0

. 하지만 당신 문제가 뭔지 알 것 같아요. UNION ALL을 사용할 때 두 테이블에 모두 있으면 반복됩니다. 테이블과 다를 수 있으므로 UNION ALL에서 UNION으로 변경하면 작동하지 않습니다. 다음과 같이 제안 해주십시오.

;WITH CTE 
AS 
(
    select u.Fullname as AgentName,l.fk_MemberId 
    from dbo.SavingAccountTransactions T 
    inner join Users u on t.fk_AgentId=u.Id 
    where t.TransactionDate = CAST(GETDATE() AS DATE) 
    UNION ALL 
    select u.Fullname as AgentName,l.fk_MemberId 
    from LoanAccountTransactions L 
    inner join Users u on L.fk_AgentId=u.Id 
    where l.TransactionDate = CAST(GETDATE() AS DATE) 
) 
SELECT 
    CTE.Fullname, 
    COUNT(distinct CTE.fk_MemberId) as NoOfMembersVisited 
FROM 
    CTE 
group by 
    CTE.Fullname