Ссылка на вычисляемый столбец в предложении 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;