背景
我已经将两个长长的金融交易列表(来自两家公司中的一个)合并到一个表中(实际上是一个 DataView,原因在这里并不重要)。这两家公司与很多客户开展业务。我想要的是一个查询,它返回每个公司与每个客户的金融交易总数。
例如:
Customer        Company A    Company B
Customer X         10            0
Customer Y         15           26
Customer Z          0           71
因此,每个客户至少与一家公司打交道,并且可能与两家公司打交道。
到目前为止,我的查询已经到此为止。. .
SELECT v.[Company],
   v. [AnalysisName], 
   s1.CMTtrans,
   s2.CFLtrans
FROM vMainCustTrans AS v
LEFT JOIN (SELECT [AnalysisName], COUNT([AnalysisName]) AS CMTtrans
       FROM vMainCustTrans 
       WHERE [Company] = 'Money'
       GROUP BY [AnalysisName]) AS s1
       ON v.[AnalysisName] = s1.[AnalysisName]
LEFT JOIN (SELECT [AnalysisName], COUNT([AnalysisName]) AS CFLtrans
       FROM vMainCustTrans 
       WHERE [Company] = 'Forex'
       GROUP BY [AnalysisName]) AS s2
       ON v.[AnalysisName] = s2.[AnalysisName]
ORDER BY v.[Company], v.[AnalysisName]
现在子查询 (s1) 返回 89 个客户 子查询 (s2) 返回 37 个客户 但是整个查询返回 18,989 行 应该有 89 到 126 行(即 89 + 37)行,具体取决于 A 公司和 A 公司之间的重叠程度B公司
有人可以指出我的查询有什么问题以及我如何产生我想要的结果吗?即客户列表,其中包含他们与两个客户中的每一个的交易次数的两个计数。