Оператор выбора всегда выполнять / выбирать столбцы по порядку? - PullRequest
1 голос
/ 20 мая 2010

Все ли столбцы в операторе выбора выбираются один за другим, как указано в списке?

Declare @X, @Y

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

Безопасен ли вышеуказанный запрос для использования? Будет ли сумма всегда выбираться после вычисления @X и @Y?

Ответы [ 3 ]

3 голосов
/ 20 мая 2010

Нельзя смешивать выбор столбцов и назначения переменных в одном запросе.

Если вы выбираете сумму в переменную:

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

, тогда да, @total будет назначено после вычисления @x и @y.

2 голосов
/ 20 мая 2010

Если вы намереваетесь вернуть набор результатов, я не думаю, что это сработает. Лучше написать это портативным способом:

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 голосов
/ 21 мая 2010

положить его в общее выражение таблицы CTE

CTE = больше поддерживаемых / читаемых запросов

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...