tsc*_*ock 15 sql sql-server-2008-r2
这行代码是我的select语句的一个片段.
frdFreedays - DateDiff(dd,conReceiptToStock,GetDate()) As FreeDaysRemaining
Run Code Online (Sandbox Code Playgroud)
下面是我的where子句的片段
and frdFreedays - DateDiff(dd,conReceiptToStock,GetDate()) <= @intFreeDays
Run Code Online (Sandbox Code Playgroud)
我的问题是如何引用FreeDaysRemaining列,因此我可以将它与@进行比较intFreeDays
我正在寻找这样的东西
Freedays <= @intFreeDays
Run Code Online (Sandbox Code Playgroud)
Aar*_*and 21
除了以外的任何地方都不能引用别名ORDER BY
.一种解决方法(除了重复表达式的明显可能性之外)是将它放在派生表中:
SELECT FreeDaysRemaining --, other columns
FROM
(
SELECT frdFreedays - DATEDIFF(DAY, conReceiptToStock, GETDATE()) AS FreeDaysRemaining
--, other columns
FROM ...
) AS x
WHERE FreeDaysRemaining <= @intFreeDays;
Run Code Online (Sandbox Code Playgroud)
小智 8
除了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
Run Code Online (Sandbox Code Playgroud)