我有以下代码:
DECLARE @d AS INT
SELECT @d = DATEDIFF(d, p.CreatedOn, GETDATE()),
CASE
WHEN @d <= 30 THEN
@d * 5
ELSE p.Count
END Sort
FROM table p
ORDER BY Sort
这会抛出错误
为变量赋值的SELECT语句不能与数据检索操作结合使用。
我在WHEN中的实际公式非常复杂,所以我想我重复使用该变量,因为它使用了9或10次。有什么选择吗?
一旦这个工作,我实际上需要创建一个计算列,所以不确定是否可以在那里使用变量,但我猜是宝贝步骤。
答案 0 :(得分:1)
您无法定义内联变量。如果要重用计算机列,请将其包装在CTE中:
;WITH
cte AS
(
SELECT *,
DayCount = DATEDIFF(d, p.CretaedOn, GETDATE())
FROM table p
)
SELECT CASE
WHEN DayCount <= 30 THEN DayCount * 5
WHEN ...
END Sort
FROM cte
ORDER BY Sorc