Ссылка на вычисляемый столбец в предложении where SQL
Эта строка кода является фрагментом из моего оператора select.
frdFreedays - DateDiff(dd,conReceiptToStock,GetDate()) As FreeDaysRemaining
Ниже приведен фрагмент моего предложения where
and frdFreedays - DateDiff(dd,conReceiptToStock,GetDate()) <= @intFreeDays
У меня есть вопрос, как я могу ссылаться на столбец FreeDaysRemaining, и поэтому я могу сравнить его с @intFreeDays
Я ищу что-то вроде этого
Freedays <= @intFreeDays
Ответы
Ответ 1
В дополнение к ответу Aaron вы можете использовать общее табличное выражение:
;with cte_FreeDaysRemaining as
(
select
frdFreedays - DateDiff(dd,conReceiptToStock,GetDate()) As FreeDaysRemaining
--, more columns
from yourtable
)
select
FreeDaysRemaining
--, more columns
from cte_FreeDaysRemaining
where FreeDaysRemaining <= @intFreeDays
Ответ 2
Вы не можете ссылаться на псевдоним везде, кроме ORDER BY
. Одно из решений (помимо очевидной возможности повторения выражения) заключается в том, чтобы поместить его в производную таблицу:
SELECT FreeDaysRemaining --, other columns
FROM
(
SELECT frdFreedays - DATEDIFF(DAY, conReceiptToStock, GETDATE()) AS FreeDaysRemaining
--, other columns
FROM ...
) AS x
WHERE FreeDaysRemaining <= @intFreeDays;