Why aren't MS-SQL tables dropped?

I have an interesting issue which is perplexing me.   I have included the code below.  A basic description of the issue is this.  I am running a T-SQL MS SQL Server 2008 script.  The first time through it works fine, then it doesn't work because apparently the statements that are supposed to DROP two tables at the very beginning didn't do that.  I don't know why (although I have my suspicions) and would like to figure out how to get them to work.  I'll point out too, that if I execute them by themselves, they work fine.

1) The script checks to see if the tables exist and if they do, it is supposed to drop them (which it doesn't).
2) The script creates table RJZ_SL_Temp from scratch.
3) The script populates the table RJZ_SL_Temp.
4) The script then creates the table RJZ_SL_Deliverable by pulling data from RJZ_SL_Temp
5) The script then ALTERS the table RJZ_SL_Deliverable  by DROPping some columns that were used in step 4.

Runs fine when the two created tables don't exist. If I run the commands to check for and DROP the two tables as a standalone run, they work fine.  But if I run the entire script again without dropping the two tables manually, I get a number of
"Invalid column name 'ExtractableEmailVendorFeedName'." messages. These all stem from the second to last SQL Statement where I'm counting the vendor feed names.

Essentially, SQL is looking for one of the columns that was dropped.  For some reason, the deliverable table isn't being dropped when the script is run twice in a row so the CREATE isn't working and the old modified tables remain.  If I drop the tables manually, then it works fine.

The code (parred back to make reading easier):
      DROP TABLE RJZ_SL_Deliverable;
      ,DedupID INT NOT NULL
      ,DistinctID VARCHAR(61) NULL
      ,EmployeeCount INT
      ,FirstName VARCHAR (100) NULL
      ,MiddleName VARCHAR (100) NULL
      ,LastName VARCHAR (100) NULL
      ,Prefix VARCHAR (50) NULL
      ,Suffix VARCHAR(50) NULL
      ,ExecutiveTitle VARCHAR (500) NULL
      ,OSLevelID int NULL
      ,ExtractableEmailVendorFeedID INT NULL
      ,EMail VARCHAR(255) NULL
      ,ExtractableEmailVendorFeedName VARCHAR(30) NULL
FROM PSExtract.dbo.vwCompany AS c
INNER JOIN PSExtract.dbo.vwExecutiveAndExecutiveFunction AS f
      ON c.KeyID = f.KeyID
      c.ContentSetID = 100
      AND c.MSACode = 38060  --Phoenix, AZ  
      AND f.OSFunctionID IN (330,333,355)  --Information,Network,Telecom
      AND f.OSLevelID < 61  /*  Restrict to directors or higher */
      AND F.ExtractableEmailVendorFeedID IS NOT NULL;

-- Second query
/* Populate RJZ_SL_Deliverable with data */
A.KeyID, LTRIM(RTRIM(A.CompanyName)) AS CompanyName, Address1 AS Address1, A.Address2 AS Address2, A.Address3 AS Address3, City AS City,
A.StateOrProvinceAbbrev AS StateOrProvinceAbbrev, A.PostalCode AS PostalCode, A.County AS County, CountryName AS CountryName,B.FirstName ,B.MiddleName ,B.LastName ,
B.Prefix ,B.Suffix ,B.ExecutiveTitle,B.Email,B.ExtractableEmailVendorFeedName,B.DistinctID
INTO RJZ_SL_Deliverable
FROM PSExtract.dbo.vwCompany AS A
                  FROM      RJZ_SL_Temp Employee
                  WHERE      Employee.DistinctID  IN  
                     (SELECT  TOP 5 DistinctID
                     FROM      RJZ_SL_Temp Top5Emp
                     WHERE      Top5Emp.KeyID =  Employee.KeyID
                     ORDER BY OSLevelID ASC--, DistinctID ASC
                  ORDER BY EmployeeCount Desc
                  )AS B
      ON A.KeyID =B.KeyID AND A.ContentSetID = 100
Order By A.Employees DESC, B.DistinctID;

/* Get email counts by vendor feed name */  
SELECT A.ExtractableEmailVendorFeedName, COUNT(A.ExtractableEmailVendorFeedName) as Vendor_Count
FROM RJZ_SL_Deliverable AS A
group by A.ExtractableEmailVendorFeedName
Order by A.ExtractableEmailVendorFeedName;

/* Drop non-deliverable columns from deliverable */
DROP COLUMN DistinctID,ExtractableEmailVendorFeedName;
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

RichNHAuthor Commented:
If I select and run as a block all the statements up to but not including "Second query", it works fine, the tables are dropped.   If I run as a block all the statements through second query, it doesn't work.

Is there a VB "DoEvents" equivalent in T-SQL?
You could use "GO" to signal the end of a batch

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
RichNHAuthor Commented:
Well, I'll be, I didn't even know that the GO command existed.  Thanks, it solved the problem.  Reading up on it it appears that it is the equivalent of the DoEvents command, kinda.  Thanks.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.