2013-05-06 35 views
6

Ich habe eine SQL SELECT-Anweisung, die einige Spalten enthält, die aus anderen Spalten oder Tabellen berechnet wird. Ich gab dieser Spalte einen Namen mit dem Schlüsselwort As.Sortieren der SQL-Tabelle mit Alias-Spalte

Jetzt möchte ich diese Tabelle nach der berechneten Spalte sortieren. Ich kann diesen Namen nicht zum Sortieren verwenden.

Jemand bitte helfen, die SQL-Tabelle mit berechneter Spalte

+0

Wrapping es in [], indem sie in der Reihenfolge funktionierten nicht zu sortieren? – xQbert

+0

Was bedeutet "ich kann diesen Namen nicht zum Sortieren verwenden" eigentlich? Wie die [Dokumentation] (http://msdn.microsoft.com/en-us/library/ms188385.aspx) sagt, "Eine Sortierspalte kann als Name oder Spaltenalias angegeben werden". Können Sie Ihren TSQL-Code und etwaige Fehlermeldungen anzeigen? – Pondlife

Antwort

5

eine weitere Option, die Sie den Index der Spalte NUMBER um, indem sie als Show in follwoing Beispiel verwenden können

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

dies columnd 'Neu' verwenden

+2

Es ist wirklich eine einfache Art zu sortieren .. Aber müssen Sie auf die Spaltenreihenfolge .. – Kokila

15

In älteren Versionen von SQL Server zu sortieren, können Sie die Alias ​​in einer Unterabfrage definieren:

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

In SQL Server 2008+ Sie sollten der Lage, einen Alias ​​ohne Unterabfrage order by:

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

Es funktioniert auch in SQL Server 2005 und 2000. Aus [Dokumentation zu SQL Server 2000] (http://msdn.microsoft.com/en-us/library/aa259187 (v ​​= sql.80) .aspx) "Eine Sortierspalte kann als Name oder Spaltenalias" –

+0

angegeben werden Es ist eine sehr gute Antwort. –