/ / Select statement zawsze wykonuje / wybiera kolumny w kolejności? - sql-server, tsql

Wybierz instrukcję zawsze wykonaj / wybierz kolumny w kolejności? - sql-server, tsql

Czy wszystkie kolumny w instrukcji select są wybierane jeden po drugim zgodnie z listą?

Declare @X, @Y

SELECT
@X = ColumnA*.25 + ColumnB*2.5,
@Y = ColumnA*.5 + ColumnC*1.33,
TOTAL = @X + @Y
FROM SomeTable

Czy powyższe zapytanie jest bezpieczne? Czy suma będzie zawsze wybrana po obliczeniu @X i @Y?

Odpowiedzi:

3 dla odpowiedzi № 1

Nie można mieszać wyboru kolumn i przypisań zmiennych w jednym zapytaniu.

Jeśli wybierzesz sumę do zmiennej:

SELECT  @X = ColumnA*.25 + ColumnB*2.5,
@Y = ColumnA*.5 + ColumnC*1.33,
@TOTAL = @X + @Y
FROM    SomeTable

, w takim razie tak, @total zostanie przypisany po @x i @y są obliczane.


2 dla odpowiedzi nr 2

Jeśli zamierzasz zwrócić zestaw wyników, nie sądzę, że to zadziała. Lepiej napisać to w przenośny sposób:

SELECT X, Y, X + Y AS TOTAL
FROM (SELECT ColumnA*0.25 + ColumnB*2.5 AS X,
ColumnA*0.5 + ColumnC*1.33 AS Y,
FROM SomeTable) xxx

0 dla odpowiedzi № 3

umieść go w CTE z Common Table Expression

CTE = więcej możliwych do utrzymania / czytelnych zapytań

http://www.4guysfromrolla.com/webtech/071906-1.shtml