Аналогично последнему. Соединение двух таблиц в столбцах, которые не равны, и суммирование трех столбцов во второй таблице. - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть таблица оборудования и мобильная таблица заказов на работу, к которой я хочу присоединиться, я хочу показать все оборудование и часы реагирования. Если для определенного элемента оборудования нет реактивных часов, я хочу отобразить ноль в строках, где значение равно нулю. Это то, что я имею ниже. Это только дает мне оборудование, у которого есть реактивные часы в другой таблице.

SQL Server

Select e.EquipNbr, coalesce(sum(mw.MaintTech1hours + mw.MaintTech2hours + mw.MaintTech3hours), 0) ReactiveHours 
From MblEquip e 
inner join MobileWorkOrder mw on
        mw.EquipNbr = e.EquipNbr 
    and mw.DateTm between DATEADD(month, DATEDIFF(month, 0, getDate()), 0) 
    and DATEADD(month, DATEDIFF(month, -1, getDate()), -1) 
where e.DelFlg = 0 and mw.Category = 'Reactive' 
group by e.EquipNbr order by ReactiveHours Desc;

1 Ответ

0 голосов
/ 03 ноября 2019

Если вы проверяете значение в 'where условии', ваше 'левое внешнее соединение' эквивалентно 'внутреннему соединению'.

Попробуйте это (SQL остался)

Select e.EquipNbr, coalesce(sum(isnull(mw.MaintTech1hours, 0) + isnull(mw.MaintTech2hours, 0) + isnull(mw.MaintTech3hours, 0)), 0) ReactiveHours 
From MblEquip e 
left outer join MobileWorkOrder mw on mw.EquipNbr = e.EquipNbr and mw.Category = 'Reactive'
                                and Year(mw.DateTm) =Year(getdate()) and Month(mw.DateTm) =Month(getdate())  
where e.DelFlg = 0
group by e.EquipNbr
order by ReactiveHours Desc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...