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

SQLServerでcaseステートメントを使用して複数の列を更新する

    構文を入れ替える必要があります。 caseステートメントは、更新するすべての値に適用されます...

    UPDATE table SET
        pay1 = CASE WHEN @columnname IN('name1') THEN pay1 * 100 ELSE pay1 END,
        pay2 = CASE WHEN @columnname IN('name1', 'name2') THEN pay2 * 20 ELSE pay2 END,
        pay3 = CASE WHEN @columnname IN('name1', 'name2', 'name3') THEN pay3 * 100 ELSE pay3 END
    

    実際に必要なのはifステートメントのようです...

    IF @columnname = 'name1'
        UPDATE table SET pay1 = pay1 * 100, pay2=pay2*20, pay3=pay3* 100
    
    ELSE IF @ColumnName = 'name2'
        UPDATE table SET pay2 = pay2 * 20, pay3 = pay3 * 100
    
    ELSE IF @ColumnName = 'name3'
        UPDATE table SET pay3 = pay3 * 100
    

    お役に立てば幸いです



    1. AddBatch/withBatchを適切に使用してxmlタグ値をデータベーステーブルに一括挿入する方法

    2. OFFSET / FETCHによるページネーション:より良い方法

    3. Doctrine2はFROM句のSELECTを認識しません

    4. MicrosoftAccessの5つの必知の利点