左连接子查询访问

时间:2016-08-24 10:26:41

标签: sql join access

以下代码工作正常(即没有错误)但它从子查询“e”加入所有内容。我希望它仅返回[Total Cancellations],而不是[Business Unit]

感谢帮助

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

1 个答案:

答案 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 ...