Help me

First thing first... Words mean things. When you insist on using the wrong words for things you only create confusion. A variable, in SQL Server is a specific thing. https://technet.microsoft.com/en-us/library/ms187953(v=sql.105).aspx

I know English isn't your 1st language and I'm not trying to beat you up over terminology... but learning the basics will be a benefit is the long term.

Tables have "columns". So it would be fair to say that columns: year, month#, day & shift, are all being retrieved from hist_exproot.

As far as the table joins question... When joining one table to another, yes - they are usually joined on a column (or set of columns) that they have in common. I say "typically" because, 99% of the time that's the case... but not 100%. CROSS JOINs for example, don't have an ON clause.