Результаты внутреннего соединения из двух отдельных запросов

Мне нужно запросить результаты из трех разных таблиц, и до сих пор мне удавалось получать отдельные результаты по отдельности. Теперь я хотел бы присоединиться к этим результатам. Следующие два фрагмента кода являются моими запросами. Должен ли я как-то вложить два? Я хотел бы выполнить внутреннее соединение s.STORE_NUM и str.num из нижнего запроса, но как мне объявить их отдельно?

SELECT
S.STORE_NUM,
M.YEAR_FISCAL,
--M.YEAR_445,
M.MONTH_NAME_445,
M.WEEK_START_DT_MON,
SUM(SALES_NET) - SUM(S.SALES_GCARD_NET) as SALES_WT_GC,
SUM(S.TRAFFIC_COUNT) AS TRAFFIC,
SUM(S.TICKETS_NET) AS  TRANS,
SUM(S.QTY_NET) AS UNITS,
-- Calculation level:
SUM(S.QTY_NET)/SUM(S.TRAFFIC_COUNT) AS UOT,
SUM(S.QTY_NET)/SUM(S.TICKETS_NET) AS UPT,
SUM(S.TICKETS_NET)/SUM(S.TRAFFIC_COUNT) AS CONVPCT
FROM DNA_PUBLIC..RETAIL_SALES_BY_STORE_BY_DAY S
JOIN DNA_PUBLIC.ADMIN.DAY_MAP M
ON S.DATE_DATA = M.DATE_DT
WHERE  S.DATE_DATA BETWEEN '08/24/2020' AND '09/27/2020'
AND S.SALES_NET > 0
AND S.TRAFFIC_COUNT > 0
AND S.QTY_NET > 0
AND S.TICKETS_NET > 0
AND S.STORE_NUM = 2Ah 
GROUP BY 1,2,3,4
ORDER BY S.STORE_NUM, WEEK_START_DT_MON 

а также

SELECT r.str_num, r.str_nam, r.str_dst, s.region_name, s.div_name, r.STR_ADDR, r.str_cty, r.str_zip5 
FROM admin.retail_store_names r JOIN admin.store_dim s ON r.str_num = s.store_num

person adura826    schedule 28.09.2020    source источник
comment
Правильно, я убрал соединение и порядок   -  person adura826    schedule 29.09.2020


Ответы (2)


Я хотел бы выполнить внутреннее соединение s.STORE_NUM и str.num из нижнего запроса, но как мне объявить их отдельно?

Вы можете присоединиться к обоим наборам результатов, превратив запросы в подзапросы и присоединившись к внешнему запросу. Предложение order by переходит во внешний запрос:

select t1.*, t2.*
from (
    -- first query goes here (without the "order by")
) t1
inner join (
    -- second query goes there
) t2 on t2.str_num = t1.store_num
order by t1.str_num, t2.week_start_dt_mon
person GMB    schedule 28.09.2020

Вы также можете сделать -

            SELECT
            S.STORE_NUM,
            M.YEAR_FISCAL,
            --M.YEAR_445,
            M.MONTH_NAME_445,
            M.WEEK_START_DT_MON,
            max(r.str_num) As str_num,
            max(r.str_nam) As str_nam,
            max(r.str_dst) As str_dst,
            max(st.region_name) As region_name,
            max(st.div_name) As div_name,
            max(r.STR_ADDR) As STR_ADDR,
            max(r.str_cty) As str_cty,
            max(r.str_zip5) As str_zip5,
            SUM(SALES_NET) - SUM(S.SALES_GCARD_NET) as SALES_WT_GC,
            SUM(S.TRAFFIC_COUNT) AS TRAFFIC,
            SUM(S.TICKETS_NET) AS  TRANS,
            SUM(S.QTY_NET) AS UNITS,
            -- Calculation level:
            SUM(S.QTY_NET)/SUM(S.TRAFFIC_COUNT) AS UOT,
            SUM(S.QTY_NET)/SUM(S.TICKETS_NET) AS UPT,
            SUM(S.TICKETS_NET)/SUM(S.TRAFFIC_COUNT) AS CONVPCT
            FROM DNA_PUBLIC.RETAIL_SALES_BY_STORE_BY_DAY S
            JOIN DNA_PUBLIC.ADMIN.DAY_MAP M
            ON S.DATE_DATA = M.DATE_DT
            JOIN admin.retail_store_names r
            ON S.Store_num = r.Str_num
            JOIN admin.store_dim st
            ON r.str_num = s.store_num
            WHERE  S.DATE_DATA BETWEEN '08/24/2020' AND '09/27/2020'
            AND S.SALES_NET > 0
            AND S.TRAFFIC_COUNT > 0
            AND S.QTY_NET > 0
            AND S.TICKETS_NET > 0
            AND S.STORE_NUM = 2Ah 
            GROUP BY 1,2,3,4
            ORDER BY S.STORE_NUM, M.WEEK_START_DT_MON 
person Somy    schedule 28.09.2020