Левое соединение не возвращает то же количество строк, что и исходный запрос GBQ - PullRequest
0 голосов
/ 07 мая 2020

Мне очень тяжело с этим.

У меня есть запрос, который дает 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.

Я пробовал использовать решения из подобных вопросов, размещенных здесь, но и там у меня не получилось.

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 07 мая 2020

Первый запрос выбирает ALL, затем у вас есть запрос с DISTINCT, и ваш JOIN имеет это, что приводит к меньшему набору данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...