Мне очень тяжело с этим.
У меня есть запрос, который дает 40 194 047 строк.
Когда я пытаюсь слева соединить таблицу из этого исходного запроса с другим, я не возвращаю то же количество строк. Я бы очень хотел, чтобы все нули из левого соединения, но не верю, что мой запрос правильный, поскольку # результатов не то же самое. У меня всего 40 120 219 строк.
Вот пример моего исходного запроса:
select *
from `exampletablea`
WHERE 1=1
and RETL_AMT = 0
and not RSN_CD in (23,41,43,24,25,27) --excluded reason codes
and BUS_DT BETWEEN '2019-02-04' AND '2020-02-02'
А вот пример моего запроса на соединение:
select distinct
a.FSCL_YR_WK_KEY_VAL
,a.STR_NBR AS STORE
,A.MKUP_MKDN_CTRL_NBR
,A.MKDN_RSN_TXT
,A.EFF_BGN_DT AS MUMD_EFF_BGN_DATE
,A.RGSTR_NBR
,A.POS_TRANS_ID
,A.MKUP_MKDN_RSN_CD
,A.MKUP_MKDN_TYP_CD
,A.SKU_NBR AS SKU
,A.NET_MUMD_AMT
,A.MKUP_MKDN_RETL_AMT
, b.STR_NBR
, b.SKU_NBR
, b.SKU_CRT_DT
, A.BUS_DT
, b.EFF_BGN_DT
, b.EFF_END_DT
, b.SKU_STAT_CD
from `exampletablea`
left join `exambletableb`
on a.sku_nbr = b.sku_nbr
and a.str_nbr = b.str_nbr
and a.bus_dt between b.EFF_BGN_DT and b.EFF_END_DT
where 1=1
and RETL_AMT = 0
and not RSN_CD in (23,41,43,24,25,27) --excluded reason codes
and BUS_DT BETWEEN '2019-02-04' AND '2020-02-02'
Я не могу всю жизнь выяснить, что я делаю не так. Я определенно новичок в SQL, но я пробовал все разные комбинации соединений, перемещая все предложения where в соединение, et c.
Я пробовал использовать решения из подобных вопросов, размещенных здесь, но и там у меня не получилось.
Любая помощь будет принята с благодарностью!