2013-05-06 65 views
6

我有一個sql select語句,其中包含一些從其他列或表中計算出來的列。我使用As關鍵字給這個列命名。使用別名列對Sql表進行排序

現在,我想按計算列對此表進行排序。 我無法使用該名稱進行排序。

有人請幫助使用計算列

+0

結束語[]中的順序由沒有工作? – xQbert 2013-05-06 11:55:21

+0

「我不能使用該名稱進行排序」實際上意味着什麼?正如[文檔](http://msdn.microsoft.com/en-us/library/ms188385.aspx)所述,「可以將排序列指定爲名稱或列別名」。你能顯示你的TSQL代碼和任何錯誤消息嗎? – Pondlife 2013-05-06 14:36:33

回答

5

多了一個選項,您可以在follwoing例如通過使用列索引號順序顯示

select ACol,AVal,CAST(ACol as varchar(3)) + aval as 'New' from ABC order by 3 

這將使用「新建」 columnd排序

+2

它真的是一種簡單的排序方式..但需要照顧列順序.. – Kokila 2013-05-07 13:24:26

15

在舊版本的SQL Server排序的SQL表,你可以在一個子查詢定義別名:

select * 
from (
     select col1 + col2 as col3 
     from YourTable 
     ) SubQueryAlias 
order by 
     col3 

在SQL Server 2008+你應該能夠order by別名無子查詢:

select col1 + col2 as col3 
from YourTable 
order by 
     col3 
+3

它也適用於SQL Server 2005和2000。從[SQL Server 2000文檔](http://msdn.microsoft.com/zh-cn/library/aa259187(v = sql.80).aspx)「可以將排序列指定爲名稱或列別名」 – 2013-05-06 12:00:46

+0

這是一個非常好的答案。 – 2013-05-06 12:43:44