2016-08-24 4 views
-1

следующий код работает нормально (т. Е. Не является ошибкой) Однако он объединяет все элементы подзапроса «e». Я хотел бы он вернуться [Всего Отмены] только и не [Business Unit]left join subquery access

высоко ценю помощь

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 *', который я ожидать, возвратит _all_ столбцы из запроса соединения. Ограничьте это, указав явно столбцы, которые вы хотите сохранить. –

+0

как отправить код в ответе? спасибо – Ant

+0

Пожалуйста, не оставляйте свой запрос в качестве комментария! –

ответ

2

TRY как это,

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

Amazing. Прекрасно работает. Спасибо – Ant

+0

Вы можете либо отменить или выбрать ответ, когда он работает для вас. – StackUser

+0

Если бы мне нужно было добавить еще одно левое соединение, как бы я это сделал? Еще раз спасибо – Ant