内部加入多个表

时间:2016-05-12 02:44:35

标签: sql-server join

我很难找到一个内部连接语句,它将4个不同表上的公共数据元素组合在一起。

表1:TWSchwabPlan赞助商
表2:TWSchwabBrokerDealerTPA
表3:TWSchwabInvestmentAdvisor
表4:TWFidelityDetailByCorrespondent

所有4个表格的公共字段为CUSIP。我要做的是从特定CUSIP(543917108)的所有4个表中添加购买。所有4个表都存在此CUSIP。结果应显示Fund Name和总购买量。

附加语句将运行,但结果与手动添加原始数据时的结果不匹配。

SELECT        
    MARSLite.dbo.TWSchwabPlanSponsor.[Fund Name], 
    MARSLite.dbo.TWFidelityDetailByCorrespondent.[Purchases ($)]
     + MARSLite.dbo.TWSchwabBrokerDealerTPA.Purchases 
     + MARSLite.dbo.TWSchwabInvestmentAdvisor.Purchases
     + MARSLite.dbo.TWSchwabPlanSponsor.Purchases AS 'Purchases'

FROM MARSLite.dbo.TWFidelityDetailByCorrespondent 
INNER JOIN MARSLite.dbo.TWSchwabBrokerDealerTPA 
    ON MARSLite.dbo.TWFidelityDetailByCorrespondent.CUSIP =
       MARSLite.dbo.TWSchwabBrokerDealerTPA.CUSIP 
INNER JOIN MARSLite.dbo.TWSchwabInvestmentAdvisor 
    ON MARSLite.dbo.TWSchwabBrokerDealerTPA.CUSIP = 
       MARSLite.dbo.TWSchwabInvestmentAdvisor.CUSIP 
INNER JOIN MARSLite.dbo.TWSchwabPlanSponsor 
    ON MARSLite.dbo.TWSchwabBrokerDealerTPA.CUSIP =
       MARSLite.dbo.TWSchwabPlanSponsor.CUSIP

WHERE (MARSLite.dbo.TWSchwabBrokerDealerTPA.CUSIP = '543917108')

GROUP BY 
    MARSLite.dbo.TWSchwabBrokerDealerTPA.CUSIP, 
    MARSLite.dbo.TWSchwabPlanSponsor.[Fund Name], 
    MARSLite.dbo.TWFidelityDetailByCorrespondent.[Purchases ($)], 
    MARSLite.dbo.TWSchwabBrokerDealerTPA.Purchases, 
    MARSLite.dbo.TWSchwabInvestmentAdvisor.Purchases, 
    MARSLite.dbo.TWSchwabPlanSponsor.Purchases

1 个答案:

答案 0 :(得分:0)

谢谢大家,我使用下面的代码让它工作。

选择[CUSIP],[基金名称],总和(购买)作为'购买',总和([结束资产余额])作为'资产',总和([赎回])作为'赎回'   FROM [MARSLite]。[dbo]。[TWSchwabBrokerDealerTPA]

分组[基金名称],[CUSIP]

UNION   选择[CUSIP],[基金名称],总和(购买)作为'购买',总和([结束资产余额])作为'资产',总和([赎回])作为'赎回'   来自[MARSLite]。[dbo]。[TWSchwabInvestmentAdvisor]

分组[基金名称],[CUSIP]

UNION   选择[CUSIP],[基金名称],总和(购买)作为'购买',总和([结束余额])作为'资产',总和([赎回])作为'赎回'   来自[MARSLite]。[dbo]。[TWSchwabPlanSponsor]

分组[基金名称],[CUSIP]

UNION 

SELECT [CUSIP],[Fund Name],Sum([Purchases($)])作为'Purchases',Sum([Assets($)])作为'Assets',Sum([Redemptions($)])作为'救赎'   来自[MARSLite]。[dbo]。[TWFidelityDetailByCorrespondent]

分组[基金名称],[CUSIP]

UNION   SELECT [CUSIP],[Fund Name],Sum([Purchases($)])作为'Purchases',Sum([Assets($)])作为'Assets',Sum([Redemptions($)])作为'Redemptions “   FROM [MARSLite]。[dbo]。[TWFidelityDetailByCusip]

分组[基金名称],[CUSIP]

UNION 

SELECT [CUSIP],[Fund Name],Sum([Purchases($)])作为'Purchases',Sum([Assets($)])作为'Assets',Sum([Redemptions($)])作为'救赎'   FROM [MARSLite]。[dbo]。[TWFidelityDetailByIWSClient]

分组[基金名称],[CUSIP]

相关问题