2016-08-24 148 views
-1

以下代码可以正常工作(即不会出错)但是它会连接子查询“e”中的所有内容。我想它返回[共取消],而不是[业务部]左连接子查询访问

欣赏的帮助

SELECT * 
FROM (SELECT c.*,b.[Total Bookings] 
FROM (SELECT DISTINCT a.[business unit], count(a.[lookup_id]) as [Total Colleagues in DMS] 
FROM EVERYTHING AS a 
GROUP BY a.[business unit] 

) AS c 


LEFT JOIN (SELECT a.[business unit], count(a.[lookup_id]) as [Total Bookings] 
FROM EVERYTHING AS a 
WHERE a.[session_code]is not null 
GROUP BY a.[business unit] 

) AS b ON c.[business unit]=b.[business unit] 

) AS d LEFT JOIN (SELECT a.[business unit], count(a.[lookup_id]) as [Total Cancellations] 
FROM EVERYTHING AS a 
WHERE a.[Has Booking been cancelled (Yes/No)]=1 
group by a.[business unit] 

) AS e ON d.[business unit]=e.[business unit]; 

    enter code here 
+0

您正在使用'SELECT *',我expect会返回连接查询中的_all_列。通过明确提及要保留的列来限制这一点。 –

+0

如何在回复中发布代码?谢谢 – Ant

+0

请不要发表您的查询作为评论! –

回答

2

尝试这样,

SELECT d.[business unit] 
    ,d.[Total Colleagues in DMS] 
    ,d.[Total Bookings] 
    ,e.[Total Cancellations] 
--,f.columnname 
FROM (
    SELECT c.* 
     ,b.[Total Bookings] 
    FROM (
     SELECT DISTINCT [business unit] 
      ,count([lookup_id]) AS [Total Colleagues in DMS] 
     FROM EVERYTHING 
     GROUP BY [business unit] 
     ) c 
    LEFT JOIN (
     SELECT [business unit] 
      ,count([lookup_id]) AS [Total Bookings] 
     FROM EVERYTHING 
     WHERE [session_code] IS NOT NULL 
     GROUP BY [business unit] 
     ) b ON c.[business unit] = b.[business unit] 
    ) d 
LEFT JOIN (
    SELECT [business unit] 
     ,count([lookup_id]) AS [Total Cancellations] 
    FROM EVERYTHING 
    WHERE [Has Booking been cancelled (Yes/No)] = 1 
    GROUP BY [business unit] 
    ) e ON d.[business unit] = e.[business unit]; 
    --LEFT JOIN (....) f ON ... 
+0

令人惊叹。很棒。谢谢 – Ant

+0

您可以在上面投票或选择适合您的答案。 – StackUser

+0

如果我需要添加更多的左连接,我该怎么做?再次感谢 – Ant