Sql server 2005 SQL新手如何使用left outter联接从联系人和任务中获取contactsid?
我编写此报告是为了显示用户完成第一项任务所需的时间。当前,它将仅显示具有任务的联系人。我需要它来显示有任务和没有任务的联系人。有什么想法吗Sql server 2005 SQL新手如何使用left outter联接从联系人和任务中获取contactsid?,sql-server-2005,Sql Server 2005,我编写此报告是为了显示用户完成第一项任务所需的时间。当前,它将仅显示具有任务的联系人。我需要它来显示有任务和没有任务的联系人。有什么想法吗 SELECT c.MarketSource AS [Market Source], Coalesce(u.FirstName + ' ', ' ') + Coalesce(u.Las
SELECT c.MarketSource AS [Market Source],
Coalesce(u.FirstName + ' ', ' ') + Coalesce(u.LastName, ' ') AS [Producer],
Coalesce(c.FirstName + ' ', ' ') + Coalesce(c.MiddleName + ' ', ' ') + Coalesce(c.LastName, ' ') AS [Lead Name],
t.TaskType AS [Task],
Coalesce (t.workflow_resultchosen_label, t.result, ' ') AS [Task Result],
Dateadd(HOUR, @utcoffset, c.createdon) AS [Received On],
Dateadd(HOUR, @utcoffset, ( MIN (t.completed) )) AS [Completed],
(SELECT COUNT(*)
FROM Quotes q WITH (NOLOCK)
WHERE SaleID IS NULL
AND c.ContactID = q.ContactID) AS [Pending Quotes],
(SELECT COUNT(*)
FROM Sales s WITH (NOLOCK)
WHERE s.Client_ID = c.ContactID) AS [Total Sales]
FROM Tasks t WITH (NOLOCK)
LEFT JOIN Users U WITH (NOLOCK)
ON u.UserID = t.UserID
LEFT JOIN Contacts C WITH (NOLOCK)
ON c.ContactID = t.TargetID
WHERE iLeadPartnerID IS NOT NULL
AND ( c.CreatedOn BETWEEN @startDate AND @endDate )
AND MarketSource IS NOT NULL
AND c.WorkgroupId = @workgroupID
AND Len(c.MarketSource) > 0
AND t.TaskType <> '[=] Auto Email'
GROUP BY c.MarketSource,
u.LastName,
u.FirstName,
c.ContactId,
c.LastName,
c.FirstName,
c.MiddleName,
c.CreatedOn,
t.TaskType,
t.Result,
t.Workflow_ResultChosen_Label
ORDER BY c.LastName,
c.MiddleName,
c.FirstName
您需要使用从联系人到任务的左连接,即显示所有联系人和任何匹配的任务。此外,您需要将条件t.TaskType“[=]Auto Email”移动到ON子句或将Where子句筛选器更改为: t、 TaskType“[=]自动电子邮件”或t.TaskType为空 否则,您对任务的左连接将实际上成为内部连接
SELECT c.MarketSource AS [Market Source]
, Coalesce(u.FirstName + ' ', ' ') + Coalesce(u.LastName, ' ') AS [Producer]
, Coalesce(c.FirstName + ' ', ' ') + Coalesce(c.MiddleName + ' ', ' ') + Coalesce(c.LastName, ' ') AS [Lead Name]
, t.TaskType AS [Task], Coalesce (t.workflow_resultchosen_label, t.result, ' ') AS [Task Result]
, Dateadd(HOUR, @utcoffset, c.createdon) AS [Received On]
, Dateadd(HOUR, @utcoffset, ( MIN (t.completed) )) AS [Completed]
, (SELECT COUNT() FROM Quotes q WITH (NOLOCK) WHERE SaleID IS NULL AND c.ContactID = q.ContactID) AS [Pending Quotes]
, (SELECT COUNT() FROM Sales s WITH (NOLOCK) WHERE s.Client_ID = c.ContactID) AS [Total Sales]
From Contacts As C WITH (NOLOCK)
Left Join Tasks t WITH (NOLOCK)
On t.TargetID = C.ContactId
And t.TaskType <> '[=] Auto Email'
LEFT JOIN Users U WITH (NOLOCK)
ON u.UserID = t.UserID
WHERE iLeadPartnerID IS NOT NULL
AND ( c.CreatedOn BETWEEN @startDate AND @endDate )
AND MarketSource IS NOT NULL
AND c.WorkgroupId = @workgroupID
AND Len(c.MarketSource) > 0
GROUP BY c.MarketSource, u.LastName, u.FirstName, c.ContactId
, c.LastName, c.FirstName, c.MiddleName, c.CreatedOn, t.TaskType
, t.Result, t.Workflow_ResultChosen_Label
ORDER BY c.LastName, c.MiddleName, c.FirstName