2015-12-17 3 views
0

У меня есть 2 рабочих набора подзапросов. Я пытаюсь сделать их в один запрос с этими полями:присоединение нескольких подзапросов Oracle

select tos.source_system_order_id , tos.TOS_Date, tos.TOS_Final_Charge_Amt_Sum , oes.OES_Final_Charge_Amt_Sum 

первый запрос:

SELECT tos1.source_system_order_id, 
     tos1.tos_date, 
     SUM(tos1.tos_final_charge_amt_sum) 
FROM (SELECT source_system_order_id, 
       source_system_cd, 
       To_char(billing_month_dt, 'YYYYMM') AS TOS_Date, 
       tos_final_charge_amt_sum 
     FROM tl_ov_stage 
     ORDER BY source_system_order_id) TOS1 
GROUP BY tos1.source_system_order_id, 
      tos1.tos_date 

2ndquery

SELECT OES1.source_system_order_id, 
     oes1.oes_date, 
     SUM(oes1.oes_final_charge_amt_sum) AS OES_Final_Charge_Amt_Sum 
FROM (SELECT To_char("date", 'YYYYMM') AS OES_Date, 
       To_char("service order id") AS SOURCE_SYSTEM_ORDER_ID, 
       oes_final_charge_amt_sum 
     FROM [email protected]_link) OES1 
GROUP BY OES1.source_system_order_id, 
      oes1.oes_date, 
      oes1.order_status 

ответ

1

Попробуйте использовать CTE, чтобы объединить два select запросов. Я считаю, что CTE более читаем в таких случаях

with tos 
as 
(
SELECT tos1.source_system_order_id, 
     tos1.tos_date, 
     SUM(tos1.tos_final_charge_amt_sum) 
FROM (SELECT source_system_order_id, 
       source_system_cd, 
       To_char(billing_month_dt, 'YYYYMM') AS TOS_Date, 
       tos_final_charge_amt_sum 
     FROM tl_ov_stage 
     ORDER BY source_system_order_id) TOS1 
GROUP BY tos1.source_system_order_id, 
      tos1.tos_date 
), 
OES as 
(
SELECT OES1.source_system_order_id, 
     oes1.oes_date, 
     SUM(oes1.oes_final_charge_amt_sum) AS OES_Final_Charge_Amt_Sum 
FROM (SELECT To_char("date", 'YYYYMM') AS OES_Date, 
       To_char("service order id") AS SOURCE_SYSTEM_ORDER_ID, 
       oes_final_charge_amt_sum 
     FROM [email protected]_link) OES1 
GROUP BY OES1.source_system_order_id, 
      oes1.oes_date, 
      oes1.order_status 
) 
select tos.source_system_order_id, 
     tos.TOS_Date, 
     tos.TOS_Final_Charge_Amt_Sum, 
     oes.OES_Final_Charge_Amt_Sum 
from tos 
inner join oes 
     on tos.source_system_order_id = oes.source_system_order_id 
     AND tos.tos_date = oes.oes_date -- Remove if this is not needed 
+0

Мне нравится этот подход. но я получаю ту же ошибку, что и мои предыдущие попытки. «Команда SQL не была закончена». и красная swiggle находится под «как» в этом утверждении «from cte1 as tos» –

+0

@GET_Amazed - теперь обновление обновляется. Нехорошо с синтаксисом oracle –

+0

VR46 вы можете посмотреть на другой запрос для меня? –

Смежные вопросы