У меня есть T-SQL большой запрос:SQL Server: получить данные переменной в запросе в-запросе использования
SELECT (... some big subquery ...),
(... some big subquery ...)/field1,
CASE WHEN (... some big subquery ...) = 0 THEN ... ELSE ... END
FROM table
WHERE (... some big subquery ...) IS NOT NULL
Есть ли способ сделать это в тузд образом:
SELECT @big_query_result := (... some big subquery ...),
@big_query_result/field1,
CASE WHEN @big_query_result = 0 THEN ... ELSE ... END
FROM table
WHERE @big_query_result IS NOT NULL
?
Следует отметить, что использование псевдонима не будет работать для вас, поскольку вам нужно использовать его в предложении Where, а псевдоним не может использоваться в вашем предложении where. – Charl
Чтобы уточнить, Шарль означает, что использование псевдонима в предложении WHERE вашего примера MySQL не будет работать. SQL Server допускает псевдонимы в предложении WHERE, и, таким образом, псевдоним «WHERE RES.SubResult» в его ответе действителен. –
Джонатан, это не то, что я имею в виду; -> Это для MSSQL. Табличные псевдонимы действительны в предложениях WHERE, но не для псевдонимов столбцов для столбцов, которые вычисляются в вашем заявлении select. Использование CTE означает, что нам не нужно использовать и псевдоним вычисленного столбца в предложении select, но мы по-прежнему используем псевдоним таблицы RES. Надеюсь, теперь это становится яснее. – Charl