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

テーブルの自動増分日付フィールドとバージョンのOracleSQL

    mergeを使用したロジックだと思います およびrow_number() は正しい方向に進んでいます(ただし、おそらく、partition by すでに都市をフィルタリングしているので、句は必要ありません。日付を処理するための追加のロジックで拡張しました:

    • 最初のeffective_dt_from そして最後のeffective_dt_to 手つかずのままにしておく必要があります

    • その間に、'2017-01-01'から始まる日付を日ごとに増やしたいと考えています。 。

    クエリ:

    merge into test t
    using (
        select
            t.*,
            row_number() over(order by loc_sid asc) rn,
            count(*) over() cnt
        from test t
        where city = 'Chicago'
    ) t1
    on (t1.loc_sid = t.loc_id)
    when matched the update set
        t.version = t1.rn,
        t.effective_dt_from = 
            case 
                when rn = 1 then t.effective_dt_from
                else date '2017-01-01' + rn - 2
            end,
        t.effective_dt_to = 
            case 
                when rn = cnt then t.effective_dt_to
                else date '2017-01-01' + rn - 1
            end
    



    1. MySQL:サブクエリからの完全なデータを使用して、2つの多対多の関係と重複を含むクエリ

    2. ダウンロード後に空のファイル

    3. クロージャテーブルを使用するときに兄弟レコードを取得するためにどのクエリを使用しますか?

    4. psycopg2で動的更新クエリを作成する