Member 13518187 Ответов: 1

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 (","), но тогда мне нужно сделать группировку по элементам и дать неправильные результаты

1 Ответов

Рейтинг:
1

Member 11621026

в этом запросе можно использовать перекрестное соединение