Sql запрос изменить с помощью case
Это мой запрос SQL SERVER
Здесь таблица 1 дает все данные сделанные в течение дня продавцом тогда как таблица 2 дает специальные данные о 2 специальных товарах которые они продают
Поэтому мне нужен весь счет и сумма из таблицы 1, а из таблицы 2 Мне нужен специальный товарный счет,
Можем ли мы оптимизировать этот запрос , где мне не нужно писать запрос table2, есть ли какой-либо запрос casae, если я пишу в том же операторе tabel1.
select m.*,Of_Order_Invoices_SpecialItem from ( select SUPERVISOR,Salesman_name,staffid, ROUND(sum(Carton),0) AS O_CARTON,ROUND(SUM(Amount),0) AS ORD_AMNT ROUND(COUNT(DISTINCT(ORDER_ID)),2) as [#Of_Order_Invoices] ,ordt from t_opdata_3 OP INNER JOIN T_TREE_ITEMS TI ON OP.ITEM=TI.ITEM_CODE INNER JOIN daily_total_shoproute ON STAFFID=SALESMANCODE WHERE order_date =format(getdate() ,'yyyy-MM-dd') Order_month =MONTH(GETDATE()) and year =YEAR(GETDATE()) GROUP by SUPERVISOR,Salesman_name ,staffid ) table1 left join ( select SUPERVISOR,Salesman_name,staffid, ROUND(sum(Carton),0) AS O_CARTON,ROUND(SUM(Amount),0) AS ORD_AMNT , ROUND(COUNT(DISTINCT(ORDER_ID)),2) as Of_Order_Invoices_SpecialItem,ordt from t_opdata_3 OP INNER JOIN T_TREE_ITEMS TI ON OP.ITEM=TI.ITEM_CODE INNER JOIN daily_total_shoproute ON STAFFID=SALESMANCODE ---INNER JOIN T_TARGET T ON TU.ManagerCode=T.managercode WHERE order_date =format(getdate() ,'yyyy-MM-dd') and O_Item in ('4567','23478') Order_month =MONTH(GETDATE()) and year =YEAR(GETDATE()) GROUP by SUPERVISOR,Salesman_name ,staffid ) table2 on table1.staffid=table2.staffid
Что я уже пробовал:
Я попытался поместить case if в таблицу 1, где item in (","), но тогда мне нужно сделать группировку по элементам и дать неправильные результаты