ALIAS’ın Where ve Order by içinde kullanımı
örnekle olayı anlatmaya çalışalım. Where içinde Alias kullanmak: select name as ObjeAdi, YEAR(create_date) as YIL, create_date as OlusturmaTarihi from sys.objects where YIL = 2012 Yukarıdaki sorguyu çalıştırdığınız zaman “Invalid column name ‘YIL’.” hatası alırsınız. Order by İçinde Kullanımı : select name as ObjeAdi, YEAR(create_date) as YIL, create_date as OlusturmaTarihi from sys.objects order by YIL desc Yukarıdaki sorguyu ise herhangi bir hata almadan çalıştırabilirsiniz. Peki bunun sebebi nedir ? SQL Server bir sorguyu işlerken belirli bir sıraya göre işlem yapar. Bu sıra genel hatları ile şu şekildedir. FROM -> ON -> WHERE -> SELECT -> ORDER BY Tanımladığınız YIl alias ı select içinde tanımlandığı ve WHERE kısmı SQL de SELECT’ten önce çalıştığı için, WHERE kısmı çalışırken SQL engine daha YIL adındaki aliasın ne olduğunu bilmemekte. Bu yüzden de invalid column name hatası vermekte. sorunu ; select f.* from (select name as ObjeAdi, YEAR(create_date) as YIL, create_date as OlusturmaTarihi from sys.objects ) as f where YIL = 2012 modunda aşabilirsiniz.