0

我有一个包含 3 个字段的临时表:一个 id、一个带有数字的 char 值(称为数据)和一个 char 值(称为状态)。

我必须像这样检查状态字段:

Declare @sum as int
CASE #temp.status
when #temp.status in (1,2) then
Set @sum = (select SUM(data) FROM #temp groupby id)
When #temp.status in 3 then Set @sum = 1

但是,我有一个不正确的语法整洁的关键'Case'。你能帮我么?

4

2 回答 2

1
Declare @sum as int
SELECT @Sum = SUM(CASE WHEN status in (1,2) THEN data WHEN status = 3 THEN 1 END) FROM #temp
于 2013-10-04T08:58:43.223 回答
-1
Declare @sum as int

Set @sum = CASE when #temp.status in (1,2) 
                then (select SUM(data) FROM #temp)
                When #temp.status = 3 
                then 1
           END

在您的子查询中,您group by id. 这很可能会返回您可能不想要的多条记录。

于 2013-10-04T08:56:24.073 回答