2010-06-20 9 views
5

Sie wissen, wie Sie einem Rückgabewert in einer SQL-Anweisung wie diesem einen temporären Spaltennamen zuweisen können?Wählen Sie AS Temp_Name FROM Tabelle WHERE Temp_Name = etwas?

SELECT something+this+that AS myvalue FROM mytable 

Ist es möglich, den temporären Namen myvalue als bedingt zu verwenden?

SELECT something+this+that AS myvalue FROM mytable WHERE myvalue = 10 

Ich kann nicht scheinen, um die Syntax, um herauszufinden, dies zu tun. Die einzige Art, wie ich herausfinden kann, wie es zu tun ist, um die gesamte Spalte Definition wie folgt wieder neu zu schreiben out:

SELECT something+this+that AS myvalue FROM mytable WHERE something+this+that = 10 

Offensichtlich das obige Beispiel ein triviales Beispiel ist. Meine Abfrage, auf die ich das tun muss, ist extrem komplex, so dass das Umschreiben jeder zurückgegebenen Spaltendefinition für jeden Konditional ziemlich mühsam sein wird.

Also, wie ist die Syntax dafür? Ist es möglich?

+0

Welche Version von SQL Server? –

Antwort

7

eine abgeleitete Tabelle verwenden ...

SELECT 
    myvalue 
FROM 
    (
    SELECT something+this+that AS myvalue FROM mytable 
    ) foo 
WHERE 
    myvalue = 10 

Oder einen CTE verwenden, die mehr elegant aussieht, aber die gleiche

;WITh myCTE AS 
(
    SELECT something+this+that AS myvalue FROM mytable 
) 
SELECT 
    myvalue 
FROM 
    myCTE 
WHERE 
    myvalue = 10 

Oder eine berechnete Spalte, so dass es normalerweise

ALTER TABLE MyTable ADD myvalue AS something+this+that 
verwendbar ist
0

Ich glaube nicht, dass es möglich ist, aber Sie können schummeln, indem Sie die Daten in eine temporäre Tabelle und dann eine zweite Abfrage ausführen, um den Rest auszuführen.

Das oder dynamische SQL, aber ich bin kein Fan von letzterem.

-1

WÄHLEN Sie etwas + this + dass AS myvalue FROM meine Tabelle WHERE myvalu e = 10

Sie so etwas versuchen könnte:

SELECT something+this+that AS myvalue 
FROM `users` 
HAVING myvalue=10; 
Verwandte Themen