Объединить SQL-запрос с другим предложением где - PullRequest
0 голосов
/ 26 июня 2018

У меня есть 3 шага для создания выходной таблицы, где выходные данные первой таблицы вводятся во вторую таблицу и т. Д. Единственная разница - это условие where в 3 запросах. Хотите объединить, чтобы улучшить скорость и производительность. Подскажите, пожалуйста, как это сделать. Ниже приведены вопросы:

SELECT DISTINCT
A.*
,R.Channel
,R.[Deal Description]
into Intermediate_Temp_Table1
--select count(*)
FROM Temp_Table
left join [ID vs CHANNEL_MAPPING] M ON M.Outlet_Id = A.VIP_OUTLET_ID
LEFT JOIN [product TO SUBBRAND MAPPING](nolock) B on A.BPP_CODE = B.[BPP Code] 
LEFT JOIN [DBO].[A1 VS A2] C (nolock) ON (C.[C6 CODE] = A.SHIP_TO_CUST_CODE) 
LEFT JOIN Price_Structure_FY18 R 
 ON B.[SUBBRAND ID]=R.[SUBBRAND  CODE] 
 AND C.[C5 CODE] = R.[CUSTOMER C5  CODE]
 AND CONVERT(decimal(16,2),A.NET_UNIT_PRICE) = CONVERT(decimal(16,2),R.[Suggested PTR])
 and R.Channel = M.[CHANNEL 1]
 and A.MONTH_END_DATE_KEY = R.MONTH_END_DATE_KEY
 AND  A.RDTYPE is  NULL

------------------------------------
  SELECT DISTINCT
A.*
,R.Channel
,R.[Deal Description]
into Intermediate_Temp_Table2
--select count(*)
FROM Intermediate_Temp_Table1
left join [ID vs CHANNEL_MAPPING] M ON M.Outlet_Id = A.VIP_OUTLET_ID
LEFT JOIN [product TO SUBBRAND MAPPING](nolock) B on A.BPP_CODE = B.[BPP Code] 
LEFT JOIN [DBO].[A1 VS A2] C (nolock) ON (C.[C6 CODE] = A.SHIP_TO_CUST_CODE) 
LEFT JOIN Price_Structure_FY18 R 
 ON B.[SUBBRAND ID]=R.[SUBBRAND  CODE] 
 AND C.[C5 CODE] = R.[CUSTOMER C5  CODE]
 AND CONVERT(decimal(16,2),A.NET_UNIT_PRICE) = CONVERT(decimal(16,2),R.[Suggested PTR])
 and R.Channel = M.[CHANNEL 2]
 and A.MONTH_END_DATE_KEY = R.MONTH_END_DATE_KEY
 AND  A.RDTYPE is  NULL

----------------------------------------------------------------------

SELECT DISTINCT
A.*
,R.Channel
,R.[Deal Description]
into Intermediate_Temp_Table3
--select count(*)
FROM Intermediate_Temp_Table2
left join [ID vs CHANNEL_MAPPING] M ON M.Outlet_Id = A.VIP_OUTLET_ID
LEFT JOIN [product TO SUBBRAND MAPPING](nolock) B on A.BPP_CODE = B.[BPP Code] 
LEFT JOIN [DBO].[A1 VS A2] C (nolock) ON (C.[C6 CODE] = A.SHIP_TO_CUST_CODE) 
LEFT JOIN Price_Structure_FY18 R 
 ON B.[SUBBRAND ID]=R.[SUBBRAND  CODE] 
 AND C.[C5 CODE] = R.[CUSTOMER C5  CODE]
 AND CONVERT(decimal(16,2),A.NET_UNIT_PRICE) = CONVERT(decimal(16,2),R.[Suggested PTR])
 and R.Channel = M.[CHANNEL 3]
 and A.MONTH_END_DATE_KEY = R.MONTH_END_DATE_KEY
 AND  A.RDTYPE is  NULL

1 Ответ

0 голосов
/ 26 июня 2018

для этого вам нужен только один выбор это потому, что ваша единственная разница - R.Channel

SELECT DISTINCT
A.*
,R.Channel
,R.[Deal Description]
into Intermediate_Temp_Table1
--select count(*)
FROM Temp_Table
left join [ID vs CHANNEL_MAPPING] M ON M.Outlet_Id = A.VIP_OUTLET_ID
LEFT JOIN [product TO SUBBRAND MAPPING](nolock) B on A.BPP_CODE = B.[BPP Code] 
LEFT JOIN [DBO].[A1 VS A2] C (nolock) ON (C.[C6 CODE] = A.SHIP_TO_CUST_CODE) 
LEFT JOIN Price_Structure_FY18 R 
 ON B.[SUBBRAND ID]=R.[SUBBRAND  CODE] 
 AND C.[C5 CODE] = R.[CUSTOMER C5  CODE]
 AND CONVERT(decimal(16,2),A.NET_UNIT_PRICE) = CONVERT(decimal(16,2),R.[Suggested PTR])
 and R.Channel = M.[CHANNEL 1]
 and R.Channel = M.[CHANNEL 2]
 and R.Channel = M.[CHANNEL 3]
 and A.MONTH_END_DATE_KEY = R.MONTH_END_DATE_KEY
 AND  A.RDTYPE is  NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...