我開發的數據庫之一正在升級到SQL 2008(來自SQL 2000)。SQL Server 2008升級/編譯 - 列別名和表別名
升級顧問正在標記一個我認爲不是問題的問題。我希望有文件證明這是一個已知的問題,所以我的數據庫團隊會讓它通過。
錯誤是說,在2008年SQL你不能使用表別名和列別名在一起。它還說,使用這些sprocs不會編譯。
這裏是不同的SQL方案的導致此:
select
case
when tblOneAlias.COLUMN_NAME is null then tblTwoAlias.COLUMN_NAME
else tblOneAlias.COLUMN_NAME
end as COLUMN_NAME
from tblOne tblOneAlias
join tblTwo tblTwoAlias
on tblOneAlias.JOIN_VALUE = tblTwoAlias.JOIN_VALUE
order by tblOneAlias.COLUMN_NAME, tblTwoAlias.COLUMN_NAME
select tblAlias.COLUMN_NAME as 'COLUMN_NAME'
from tblName tblAlias
order by tblAlias.COLUMN_NAME
select COLUMN_NAME = tblAlias.COLUMN_NAME
from tblName tblAlias
order by tblAlias.COLUMN_NAME
在每個場景的別名創建匹配es實際的列名(通常不是我認同的好主意)。
然而,他們在編譯SQL 2008(設置爲10兼容級別)就好了。我認爲升級顧問只是混淆,因爲別名與列名相同。我同意在這裏有一些「不太需要的代碼」。但我不認爲它需要改變升級到SQL 2008
越少的東西,我們可以改變這個升級意味着更少的東西來看看,如果當我們推出到生產的東西打破。
如果任何人的任何文件說這是一個已知的限制,那麼請讓我知道知道。
而且,如果我錯了,這些都不是在2008年SQL某種程度上允許的(儘管它們編譯就好了),那麼我也想知道。
謝謝...
但這些不是真正的列別名是他們?我想我不確定,因爲他們是同一個名字。哪一個被使用? – Vaccano 2009-10-13 16:38:18
沒錯,我不認爲UA明白這一點。 – ajdams 2009-10-13 17:25:29