Oracle SQL:条件に基づいて特定のレコードをあるテーブルから別のフィルタリング行に転送します

プラチ

一部の列の特定のレコードを転送する必要があるTable1Table2が、条件に基づいて行をフィルタリング。

Table1以下に示すように、多くの列が含まれているとしましょう

Table1

A                 B                        C        D     E    F       G     H   ...
1    24-OCT-20 08.22.57.642000000 AM      100      xyz    1    1     
2    24-OCT-20 08.22.57.642000000 AM      100      xyz    1    0
13   25-OCT-20 05.47.52.733000000 PM      100      xyz    1    0
34   26-OCT-20 09.22.57.642000000 AM      100      xyz    1    0
25   26-OCT-20 09.25.57.642000000 AM      101      xyz    1    0
26   26-OCT-20 09.25.57.642000000 AM      101      xyz    1    1
6    26-OCT-20 09.25.57.642000000 AM      101      abc    1    1
10   26-OCT-20 09.25.57.642000000 AM      101      xyz    0    1
17   26-OCT-20 04.22.57.642000000 AM      100      xyz    1    0
18   26-OCT-20 06.22.57.642000000 AM      105      xyz    1    1
19   26-OCT-20 06.22.57.642000000 AM      105      xyz    1    0

Table2で、以下に基づいてTable1から行を挿入する必要があります。

まず、select A, B, C, D, E, F from Table1 where D='xyz' and E=1;このクエリの結果に以下condition適用して、不要な行をさらに除外します。

Condition: For same values in columns B, C, D & E in 2 different rows, if column F has 2 different values then only keep the row with greater value in column A.

したがって、の望ましい出力Table2は次のように表示されます。

Table2

A                 B                        C        D     E    F
2    24-OCT-20 08.22.57.642000000 AM      100      xyz    1    0
13   25-OCT-20 05.47.52.733000000 PM      100      xyz    1    0
34   26-OCT-20 09.22.57.642000000 AM      100      xyz    1    0
26   26-OCT-20 09.25.57.642000000 AM      101      xyz    1    1
17   26-OCT-20 04.22.57.642000000 AM      100      xyz    1    0
19   26-OCT-20 06.22.57.642000000 AM      105      xyz    1    0

これは、最も単純で最も効率的なSQLクエリを介してどのように達成できますか?

どんな助けでもありがたいです。

GMB

ウィンドウ関数を使用できます。

insert into table2 (a, b, c, d, e, f)
select a, b, c, d, e, f
from (
    select t1.*,
        row_number() over(partition by b, c, d, e order by a desc) rn
    from table1 t1
    where d = 'xyz' and e = 1
) t1
where rn = 1

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Oracle-列の値に基づいて1つのテーブルから別のテーブルにデータをビニングするSQLクエリ?

分類Dev

Oracle-列の値に基づいて1つのテーブルから別のテーブルにデータをビニングするSQLクエリ?

分類Dev

別のテーブルに基づいてテーブルから選択するレコード数Oracle

分類Dev

別のテーブルの列に基づいてテーブルにレコードを挿入します(Oracle SQL Developerの場合)

分類Dev

Oracleでは、パラメータに基づいて個別のテーブルに挿入する「ルーティングインターフェイス」を作成したいと思います。

分類Dev

異なる列の値に基づいて、Oracleの異なるグループから複数のレコードをプルします

分類Dev

Oracleの現在の日付からのタイムスタンプ値に基づいてレコードを日数でグループ化する方法

分類Dev

現在の日付に基づいて、Oracleのリーフからルートノードを取得します

分類Dev

Oracleの他のテーブルの条件付きクエリに基づいて行を選択する

分類Dev

同じ非主キー値を持つ行をフィルタリングし、Oracleの結果から別のnull列を持つレコードを除外するようにクエリします

分類Dev

別のテーブルの値に基づいて、Oracleのテーブルの値を更新します

分類Dev

Oracle SQLはテーブルをクエリし、結果に基づいて他のテーブルから削除します

分類Dev

重複レコードをフィルタリングし、他のレコードに結合します-ORACLE

分類Dev

Oracle APEXフォームを使用して、ドロップダウンメニューからの他の選択に基づいて他のフィールドをグレー表示にすることは可能ですか?

分類Dev

Oracleの3番目のテーブルからすべてのレコードを返さずに、3番目のテーブルをマッピングして2つのテーブルを結合するようにクエリします。

分類Dev

条件に基づくOracleテーブルのランダムレコード

分類Dev

oracle pl / sqlの他の列の最大値に基づいてフィールドを選択します

分類Dev

Oracle 10g:テーブルAからBに基づいて条件付きで行を挿入する方法

分類Dev

とにかく、spark-sql 2.xの完全なデータフレームでフィルタリングする代わりに、where句を使用してOracleデータベースに直接クエリを実行しますか?

分類Dev

Oracleのリーフに基づいて階層ツリーからサブツリーを抽出します

分類Dev

同じテーブルのvarcharフィールドに基づくシーケンス番号でOracleテーブルの列を更新します

分類Dev

Oracle-PL / SQLコーディング-別のテーブルから複数のテーブルに挿入

分類Dev

ORACLEのあるテーブルから別のテーブルに6000000レコードを挿入する最良の方法は何ですか?

分類Dev

Oracle-特定の値に基づいてフィールド値を変更する方法

分類Dev

クエリに基づいてレコードを挿入します(oracle、sql)

分類Dev

SQL on Oracle:すでに2つのテーブルを結合していますが、別のテーブルから別の列が必要です(別の結合)

分類Dev

Oracleの日付に基づいてデータベースフィールド値を合計する方法

分類Dev

最も近い日付に基づいて Oracle テーブルにレコードを保持する方法

分類Dev

OracleのSQLは、テキストを行に分割してフィルタリングします

Related 関連記事

  1. 1

    Oracle-列の値に基づいて1つのテーブルから別のテーブルにデータをビニングするSQLクエリ?

  2. 2

    Oracle-列の値に基づいて1つのテーブルから別のテーブルにデータをビニングするSQLクエリ?

  3. 3

    別のテーブルに基づいてテーブルから選択するレコード数Oracle

  4. 4

    別のテーブルの列に基づいてテーブルにレコードを挿入します(Oracle SQL Developerの場合)

  5. 5

    Oracleでは、パラメータに基づいて個別のテーブルに挿入する「ルーティングインターフェイス」を作成したいと思います。

  6. 6

    異なる列の値に基づいて、Oracleの異なるグループから複数のレコードをプルします

  7. 7

    Oracleの現在の日付からのタイムスタンプ値に基づいてレコードを日数でグループ化する方法

  8. 8

    現在の日付に基づいて、Oracleのリーフからルートノードを取得します

  9. 9

    Oracleの他のテーブルの条件付きクエリに基づいて行を選択する

  10. 10

    同じ非主キー値を持つ行をフィルタリングし、Oracleの結果から別のnull列を持つレコードを除外するようにクエリします

  11. 11

    別のテーブルの値に基づいて、Oracleのテーブルの値を更新します

  12. 12

    Oracle SQLはテーブルをクエリし、結果に基づいて他のテーブルから削除します

  13. 13

    重複レコードをフィルタリングし、他のレコードに結合します-ORACLE

  14. 14

    Oracle APEXフォームを使用して、ドロップダウンメニューからの他の選択に基づいて他のフィールドをグレー表示にすることは可能ですか?

  15. 15

    Oracleの3番目のテーブルからすべてのレコードを返さずに、3番目のテーブルをマッピングして2つのテーブルを結合するようにクエリします。

  16. 16

    条件に基づくOracleテーブルのランダムレコード

  17. 17

    oracle pl / sqlの他の列の最大値に基づいてフィールドを選択します

  18. 18

    Oracle 10g:テーブルAからBに基づいて条件付きで行を挿入する方法

  19. 19

    とにかく、spark-sql 2.xの完全なデータフレームでフィルタリングする代わりに、where句を使用してOracleデータベースに直接クエリを実行しますか?

  20. 20

    Oracleのリーフに基づいて階層ツリーからサブツリーを抽出します

  21. 21

    同じテーブルのvarcharフィールドに基づくシーケンス番号でOracleテーブルの列を更新します

  22. 22

    Oracle-PL / SQLコーディング-別のテーブルから複数のテーブルに挿入

  23. 23

    ORACLEのあるテーブルから別のテーブルに6000000レコードを挿入する最良の方法は何ですか?

  24. 24

    Oracle-特定の値に基づいてフィールド値を変更する方法

  25. 25

    クエリに基づいてレコードを挿入します(oracle、sql)

  26. 26

    SQL on Oracle:すでに2つのテーブルを結合していますが、別のテーブルから別の列が必要です(別の結合)

  27. 27

    Oracleの日付に基づいてデータベースフィールド値を合計する方法

  28. 28

    最も近い日付に基づいて Oracle テーブルにレコードを保持する方法

  29. 29

    OracleのSQLは、テキストを行に分割してフィルタリングします

ホットタグ

アーカイブ