1

表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

したがって、特定のクラスの場合、すべての int が null である del = 'A' を入力したいのですが、それ以外の場合は 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
4

2 に答える 2

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 句 (Transact-SQL)を、CTE (共通テーブル式)の詳細についてはWITH common_table_expression (Transact-SQL)を参照してください。

于 2012-04-11T14:25:28.673 に答える
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
于 2012-04-11T01:06:16.603 に答える