2014-10-22 126 views
0

我正在写一个SQL查询,但有困难与我的联接/子查询。 我有一个任务表,我想加入到另一个表'tbl_Profile_Mortgage' 问题是,任务表有多个重复的clientID的,所以加入他们带回所有包括重复。我已经修改它只看客户端ID的'taskid = originatorId' 这工作正常,但我想创建另一个连接来显示我的任务表中的列,但因为我已经完成任务表中的连接一个子查询我不能引用任务列。希望这是有道理的。 我已经注释掉了我想要添加的连接以及要显示的列ID。任何帮助将不胜感激。 感谢SQL子查询左加入

SELECT 
 
pm.DateCompleted AS DateCompleted, 
 
pm.DateAppRcvd AS DateAppRcvd, 
 
pm.DatePAckaged AS DatePackaged, 
 
pm.DateOffered AS DateOffered, 
 
pm.DateAppIssued AS DateAppIssued, 
 
pm.DatePassed AS DatePassed, 
 
pm.DateCancelled AS DateCancelled, 
 
pm.DateOfEnquiry AS DateOfEnquiry, 
 
pm.Arrangementfee, 
 
pm.Lender, 
 
pm.DateDip, 
 
cf.ClNTNME, 
 
pm.dateDeclined, 
 
pm.Procfeeexp, 
 
pm.fk_ProfileId, 
 
u.FullName AS Advisor, \t \t \t 
 
pm.Source, 
 
pm.AmountRequested, 
 
c.CaseTypeDesc, 
 
cf.ClientId, 
 
--ISD.ISDESC, 
 
pm.AmountRequested, 
 
pl.SiteNameNum, 
 
pl.SiteAddr1, 
 
pl.SiteAddr2, 
 
pl.SiteTown, 
 
pl.SiteCounty, 
 
pl.SitePostcode 
 
FROM dbo.tbl_Profile_Mortgage AS pm 
 
\t LEFT JOIN dbo.tbl_ClientFile AS cf 
 
\t \t ON cf.ClientID = pm.ClientId 
 
\t LEFT JOIN tbl_Profile_ProjectLand AS pl 
 
\t \t ON pl.FK_ProfileId = pm.FK_ProfileId 
 
\t LEFT JOIN tbl_User AS u 
 
\t \t ON u.UserId \t = pm.UpdatedBy 
 
\t LEFT JOIN dbo.tbl_CaseTypes AS c 
 
\t \t ON c.CaseTypeId = pm.CaseType 
 
\t LEFT JOIN 
 
\t \t (
 
\t \t SELECT Distinct ClientId 
 
\t \t \t FROM Tasks 
 
\t \t \t WHERE TaskId = OriginatorId 
 
\t \t \t )t 
 
\t \t ON (t.clientid = pm.ClientId) 
 
\t --LEFT JOIN dbo.tbl_DDInitialSource AS ISD 
 
\t -- \t ON t.EnquirySource = ISD.ISId

+1

的依赖ClientID和EnquirySource之间的任务子数据关系查询连接(查询中的表t)。如果EnquirySource对每个重复的ClientID实例都是相同的,那么只需将任何合理的聚合添加到子查询中即可。例如。 SELECT区分ClientId,MAX(EnquirySource)FROM任务。但是,如果它们不一样,那么您需要确定如何最终得到一个“答案”(MIN,MAX,MEAN等)。 – 2014-10-22 10:27:28

回答

0

所以我采取了增加最大的子查询的戴维·布朗的建议和它完美的感谢戴夫

SELECT 
 
pm.DateCompleted AS DateCompleted, 
 
pm.DateAppRcvd AS DateAppRcvd, 
 
pm.DatePAckaged AS DatePackaged, 
 
pm.DateOffered AS DateOffered, 
 
pm.DateAppIssued AS DateAppIssued, 
 
pm.DatePassed AS DatePassed, 
 
pm.DateCancelled AS DateCancelled, 
 
pm.DateOfEnquiry AS DateOfEnquiry, 
 
pm.Arrangementfee, 
 
pm.Lender, 
 
pm.DateDip, 
 
--cf.ClNTNME, 
 
pm.dateDeclined, 
 
pm.Procfeeexp, 
 
pm.fk_ProfileId, 
 
u.FullName AS Advisor,    
 
pm.Source, 
 
pm.AmountRequested, 
 
--c.CaseTypeDesc, 
 
cf.ClientId, 
 
ISD.ISDESC, 
 
pm.AmountRequested, 
 
pl.SiteNameNum, 
 
pl.SiteAddr1, 
 
pl.SiteAddr2, 
 
pl.SiteTown, 
 
pl.SiteCounty, 
 
pl.SitePostcode 
 
FROM dbo.tbl_Profile_Mortgage AS pm 
 
LEFT JOIN dbo.tbl_ClientFile AS cf 
 
    ON cf.ClientID = pm.ClientId 
 
LEFT JOIN tbl_Profile_ProjectLand AS pl 
 
    ON pl.FK_ProfileId = pm.FK_ProfileId 
 
LEFT JOIN tbl_User AS u 
 
    ON u.UserId = pm.UpdatedBy 
 
LEFT JOIN 
 
(SELECT DISTINCT ClientID, MAX(enquirySource) AS enquirySource 
 
      FROM Tasks 
 
    GROUP BY clientID 
 
    ) AS t 
 
    ON t.clientid = pm.ClientId 
 
LEFT JOIN dbo.tbl_DDInitialSource AS ISD 
 
    ON t.EnquirySource = ISD.ISId