将case语句结果赋给变量

时间:2011-10-14 18:13:25

标签: tsql sql-server-2008

当我尝试运行以下语句时,出现此错误:

“为变量赋值的SELECT语句不能与数据检索操作结合使用。”

DECLARE @OFR DECIMAL(18,2)
;
SELECT @OFR = 
CASE SUM(ofr.Quantity)
WHEN 0 THEN 0 
ELSE SUM(ofr.Gross) / SUM(ofr.Quantity)
END
FROM DistributionCosts ofr
;
SELECT @OFR

我只想把那个case语句的结果粘贴到一个变量中,我就会被困在这里。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

您确定这是您的错误所在吗?我刚刚运行了以下声明并且有效:

DECLARE @OFR DECIMAL(18,2)
;
with DistributionCosts  as
(
  select 1 as quantity, 5 as gross
  union
  select 5 , 20
)
SELECT @OFR = 
CASE SUM(ofr.Quantity)
WHEN 0 THEN 0 
ELSE SUM(ofr.Gross) / SUM(ofr.Quantity)
END
FROM DistributionCosts ofr

;
SELECT @OFR

如果除了设置变量之外我选择了一个列,我确实会收到您的错误...如果您选择其他列,则需要停止选择该列或将该列分配给本地变量。