Скорее всего, ваш left join
не нашел подходящей строки в stockprices2
. В этом случае строка из step1
сохраняется, но все столбцы из stockprices2
будут иметь null
в наборе результатов. Таким образом база данных сигнализирует о том, что left join
оказался пустым.
Вы можете легко убедиться в этом, просто заменив left join
на inner join
: вы должны вернуть меньше строк (где есть не соответствует в stockprices2
, строка из step1
удаляется из набора результатов), и нет значений null
в sp.close
.
Или вы можете добавить один из столбцов, используемых в left join
в предложении select
, и вы увидите, что это тоже null
.
select
st.*,
sp.close,
sp.symbol -- null too
from step1 st
left join stockprices2 sp
on st.symbol = sp.symbol
and st.year = sp.year
and st.startmonth = sp.month
and st.startday = sp.day
and st.sector = sp.sector
Боковое примечание: круглые скобки вокруг условий соединения излишни.