Omdat een van hen een transactie sql-opdracht is (de try catch) en de andere een DDL-instructie is.
U kunt er waarschijnlijk beter aan doen een query uit te voeren om te zien of de kolom bestaat voordat u de alter-instructie uitvoert.
Om dit te doen met MSSQL, zie Hoe te controleren of een kolom bestaat in een SQL Server-tabel?
Speciaal voor jouw geval,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END