表A
int class del
null 13
null 13
null 13
12 13
null 23
null 23
null 87
null 74
null 74
null 65
32 65
所以,我想填充del ='A',对于给定的类,其所有int都为null,否则它应该填充B。
预期结果:
表A
int class del
null 13 B
null 13 B
null 13 B
12 13 B
null 23 A
null 23 A
null 87 A
null 74 A
null 74 A
null 65 B
32 65 B
答案 0 :(得分:2)
update
TableA
set
del = Case
when mcolint is null Then 'A'
Else 'B'
End
from
TableA T
inner join
(
select
class,
MAX(colint) mcolint
from
TableA
group by
class
) T1
on
T.class = T1.class
答案 1 :(得分:2)
在SQL Server 2005+中,您可以执行以下操作:
WITH calcDelValue AS (
SELECT
*,
CASE
WHEN MAX(int) OVER (PARTITION BY class) IS NULL THEN 'A'
ELSE 'B'
END AS Value
FROM TableA
)
UPDATE calcDelValue
SET del = Value
有关窗口聚合函数的更多信息,请参阅OVER Clause (Transact-SQL),有关 CTE(公用表格式)的信息,请参阅WITH common_table_expression (Transact-SQL)。