-2

テーブルMARKSに2つの列(DES1、DES2)があり、それらの2つの列からMAXIMUM(両方の列の各行)マークを見つけて、別の列(DES)に最大マークを入力します(両方の列の場合)同じデータを持っている場合は、[MS ACCESS]の列(DES)に同じデータを入力します

テーブルマーク

DES1

34

23

30

DES2

22

40

30

4

3 に答える 3

1

別のアプローチを次に示します。

UPDATE Marks
SET Des = (SELECT Max(v) FROM (VALUES (Des1), (Des2)) AS value(v))

比較する列がたくさんある場合、これはよりクリーンになる可能性があります。それ以外の場合は、CASE ステートメントを使用します。これは、null 値でもうまく機能します。

また、これは>= SQL 2008でのみ機能します

于 2012-06-14T13:52:09.973 に答える
0

ただし、これはテストされていません。

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
于 2012-06-14T13:30:28.937 に答える
0

CASE次のステートメントを使用します。

UPDATE  Marks
SET     Des = CASE WHEN Des1 > Des2 OR Des2 IS NULL THEN Des1 ELSE Des2 END
于 2012-06-14T13:32:47.533 に答える