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

パーティションセンテンスに対するSELECTランクのSQLUPDATE

    サブクエリに参加できます 更新を実行します :

    UPDATE table_name t2
    SET t2.rank=
      SELECT t1.rank FROM(
      SELECT company,
        direction,
        type,
        YEAR,
        MONTH,
        value,
        rank() OVER (PARTITION BY direction, type, YEAR, MONTH ORDER BY value DESC) AS rank
      FROM table_name
      GROUP BY company,
        direction,
        TYPE,
        YEAR,
        MONTH,
        VALUE
      ORDER BY company,
        direction,
        TYPE,
        YEAR,
        MONTH,
        VALUE
      ) t1
    WHERE t1.company = t2.company
    AND t1.direction = t2.direction;
    

    述語に必要な条件を追加します。

    または、

    MERGEを使用できます そのクエリを使用中に保持します 条項:

    MERGE INTO table_name t USING
    (SELECT company,
      direction,
      TYPE,
      YEAR,
      MONTH,
      VALUE,
      rank() OVER (PARTITION BY direction, TYPE, YEAR, MONTH ORDER BY VALUE DESC) AS rank
    FROM table1
    GROUP BY company,
      direction,
      TYPE,
      YEAR,
      MONTH,
      VALUE
    ORDER BY company,
      direction,
      TYPE,
      YEAR,
      MONTH,
      VALUE
    ) s 
    ON(t.company = s.company AND t.direction = s.direction)
    WHEN MATCHED THEN
      UPDATE SET t.rank = s.rank;
    

    ON句に必要な条件を追加します。



    1. ZendDbSelectのJOINLEFTを使用したGROUP_CONCAT

    2. PostgreSQLの日付から日を取得する

    3. QUOTENAME()関数がSQL Server(T-SQL)でどのように機能するか

    4. innodb_lock_wait_timeoutタイムアウトを増やす