テーブルMARKSに2つの列(DES1、DES2)があり、それらの2つの列からMAXIMUM(両方の列の各行)マークを見つけて、別の列(DES)に最大マークを入力します(両方の列の場合)同じデータを持っている場合は、[MS ACCESS]の列(DES)に同じデータを入力します
テーブルマーク
DES1
34
23
30
DES2
22
40
30
テーブルMARKSに2つの列(DES1、DES2)があり、それらの2つの列からMAXIMUM(両方の列の各行)マークを見つけて、別の列(DES)に最大マークを入力します(両方の列の場合)同じデータを持っている場合は、[MS ACCESS]の列(DES)に同じデータを入力します
テーブルマーク
34
23
30
22
40
30
別のアプローチを次に示します。
UPDATE Marks
SET Des = (SELECT Max(v) FROM (VALUES (Des1), (Des2)) AS value(v))
比較する列がたくさんある場合、これはよりクリーンになる可能性があります。それ以外の場合は、CASE ステートメントを使用します。これは、null 値でもうまく機能します。
また、これは>= SQL 2008でのみ機能します
ただし、これはテストされていません。
DECLARE @DES INT
SELECT @DES = (CASE WHEN MAX(DES1) = MAX(DES2) THEN MAX(DES1)
WHEN MAX(DES1) > MAX(DES2) THEN MAX(DES1)
ELSE MAX(DES2)
END)
FROM Marks
...use @DES for your insert
CASE
次のステートメントを使用します。
UPDATE Marks
SET Des = CASE WHEN Des1 > Des2 OR Des2 IS NULL THEN Des1 ELSE Des2 END