2016-08-24 55 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