sql >> データベース >  >> RDS >> Sqlserver

別の列の値に基づいて 1 つの列を更新する

    理解しやすいように、できるだけ簡単な方法でこれを説明しようと思います:

    テーブル Vendor があると仮定しましょう 次のようにセットアップします:

    create table Vendor (AccountTerms int, ulARAgeing varchar(50));
    

    そして、Vendor の両方の列にいくつかのサンプル値を挿入します。 テーブル:

    insert into Vendor values
    (0,'Test'),
    (1,'Test1'),
    (2,'Test2');
    

    次に、ulARAgeing を更新する更新ステートメントを記述します。 AccountTerms の値に基づく列 同じテーブルの列:

    update vendor 
    set ulARAgeing = (CASE 
                          WHEN AccountTerms = 0 
                            THEN 'Current'
                          WHEN AccountTerms = 1
                            THEN '30 Days'
                          WHEN AccountTerms = 2
                            THEN '60 Days'
                        END);
    

    CASE WHEN IF..ELSE の使用に似ています 他のほとんどのプログラミング言語のステートメント。そこで、ここで既存の ulARAgeing を更新します。 case when ステートメントの条件に基づいて、値を異なる文字列値に変換します。たとえば、 AccountTerms = 0 の場合 次に、ulARAgeing の値を更新します 「Current」などに。

    上記のステートメントが正しく機能したかどうかを確認するには、上記の update ステートメントを実行してから、テーブルから再度選択するだけです。

     select * from Vendor; 
    

    結果:

    +--------------+-----------------+
    | AccountTerms |   ulARAgeing    |
    +--------------+-----------------+
    |            0 |         Current |
    |            1 |         30 Days |
    |            2 |         60 Days |
    +--------------+-----------------+
    

    SQL Fiddle デモ



    1. pg gem Trace / BPTトラップ:MAC OSXlionで5エラー

    2. OracleのファイルからCLOBへのデータのコピー

    3. DATETIMEフィールドのGROUPBY月

    4. 注文後にOracleクエリによって返される行数を制限するにはどうすればよいですか?