OracleTemporaryテーブルの列と別のテーブルの行のデータ

false

これらの質問とよく似てい
ます。MSSQLCreateTemporaryTableの列名は、別のテーブルの行の値から取得されます。

別のテーブルの行値から派生した列名でテーブルを作成します

Oracleでも同じことを行う必要がありますが、この新しいテーブルに、特定の方法で編成された別のテーブルのデータを入力する必要もあります。例:

テーブルユーザー

|id|name |
----------
|1 |admin|
|2 |user |

テーブルuser_data_cols

|id|field_name|field_description|
---------------------------------
|1 |age       |Your age         |
|2 |children  |Your children    |

テーブルuser_data_rows

|id|user_id|col_id|field_value|
-------------------------------
|1 |1      |1     |32         |
|2 |1      |2     |1          |
|3 |2      |1     |19         |
|4 |2      |2     |0          |

私が欲しいのは、SQLだけを使用して、次のようなテーブルを作成することです。

|user_id|age|children|
----------------------
|1      |32 |1       |
|2      |19 |0       |

他のテーブルのデータから開始します(時間の経過とともに変化する可能性があるため、新しいフィールドが追加された場合は新しいテーブルを作成する必要があります)そのようなことも可能ですか?これは多くの優れた慣行に反するかもしれないと思いますが、仕方がありません...

ロバート・デュプイ

比較のために、ここにあなたのリンクからの答えがあります:

別のテーブルの行値から派生した列名でテーブルを作成します

SELECT
  CONCAT(
    'CREATE TABLE Table_2 (',
    GROUP_CONCAT(DISTINCT
      CONCAT(nameCol, ' VARCHAR(50)')
      SEPARATOR ','),
    ');')
FROM
  Table_1
INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;

次に、Oracle11gでも同じことを行います。

DECLARE
  stmt varchar2(8000);
BEGIN
  SELECT 'CREATE TABLE Table_2 ('||
  (SELECT 
      LISTAGG(nameCol, ', ') WITHIN GROUP (ORDER BY nameCol) "cols"
  FROM 
  (SELECT DISTINCT nameCol||' VARCHAR2(50)' nameCol FROM table_1) table_x)||
  ')'
INTO stmt
FROM DUAL;
EXECUTE IMMEDIATE stmt;
END;
/

'sqlのみを使用して'を使用してこれを実行できるかどうかを尋ねましたが、私の答えはPL / SQLブロックを使用しています。

同様の戦略を使用して、このようなテーブルにデータを入力できます。他の人が指摘しているように、解析時に列を知っている必要があります。その制限を回避するには、次のような戦略に従うことができます。

動的ピボット

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

SQLServerのあるテーブルの列名と別のテーブルの列データの比較

分類Dev

テーブル列と別のデータベース間の関係の作成

分類Dev

別のテーブルの別の行のデータで行を更新する

分類Dev

別のテーブルの別の行のデータで行を更新する

分類Dev

MySQL SELECTと別のテーブルのデータ

分類Dev

Rデータテーブルからの「NA」名の列と行の削除

分類Dev

データテーブルの重複と出力の追加の列

分類Dev

別のテーブルの列によるテーブルの行の複製

分類Dev

MySQLは、あるテーブルの列を別のデータベースのテーブルの別の列と比較します

分類Dev

データテーブルの行を区別する方法は?

分類Dev

テーブルへの列とデータの追加

分類Dev

キーと列の名前と列の更新値を使用して、テーブルデータの変更を別のテーブルに記録する方法

分類Dev

SSIS動的テーブルとデータフローの列数

分類Dev

別のテーブルの1つの行との内部結合

分類Dev

Oracle SQL:同じテーブルの別の列のデータでテーブルを更新します

分類Dev

別のテーブルの行数に基づいてテーブルの列にデータを入力する

分類Dev

別のテーブルのデータで特定の行を更新する

分類Dev

別のデータテーブルに存在するデータテーブルから行を削除します

分類Dev

複数の行と別のテーブルの列からCONCATENATE A行

分類Dev

別のテーブルからのデータの挿入-OracleSQL

分類Dev

Mysql-行を減らすことなく、別のテーブルデータから列を更新します

分類Dev

MYSQL:3つのテーブルのデータを混合し、別のテーブルと結合します

分類Dev

あるデータテーブルから別のデータテーブルに列を追加する

分類Dev

SQLテーブルの行を別のテーブルの列として使用する方法

分類Dev

データテーブルの行のグループ化

分類Dev

データベース内の1つのテーブルから、異なる列を持つ別のテーブルに特定の行を挿入します

分類Dev

HTML テーブルの最初の行と列の後の行

分類Dev

グループ化されたデータテーブルの複数の行と列の中央値

分類Dev

HTMLテーブルの列と行にMySQLデータを入力する

Related 関連記事

  1. 1

    SQLServerのあるテーブルの列名と別のテーブルの列データの比較

  2. 2

    テーブル列と別のデータベース間の関係の作成

  3. 3

    別のテーブルの別の行のデータで行を更新する

  4. 4

    別のテーブルの別の行のデータで行を更新する

  5. 5

    MySQL SELECTと別のテーブルのデータ

  6. 6

    Rデータテーブルからの「NA」名の列と行の削除

  7. 7

    データテーブルの重複と出力の追加の列

  8. 8

    別のテーブルの列によるテーブルの行の複製

  9. 9

    MySQLは、あるテーブルの列を別のデータベースのテーブルの別の列と比較します

  10. 10

    データテーブルの行を区別する方法は?

  11. 11

    テーブルへの列とデータの追加

  12. 12

    キーと列の名前と列の更新値を使用して、テーブルデータの変更を別のテーブルに記録する方法

  13. 13

    SSIS動的テーブルとデータフローの列数

  14. 14

    別のテーブルの1つの行との内部結合

  15. 15

    Oracle SQL:同じテーブルの別の列のデータでテーブルを更新します

  16. 16

    別のテーブルの行数に基づいてテーブルの列にデータを入力する

  17. 17

    別のテーブルのデータで特定の行を更新する

  18. 18

    別のデータテーブルに存在するデータテーブルから行を削除します

  19. 19

    複数の行と別のテーブルの列からCONCATENATE A行

  20. 20

    別のテーブルからのデータの挿入-OracleSQL

  21. 21

    Mysql-行を減らすことなく、別のテーブルデータから列を更新します

  22. 22

    MYSQL:3つのテーブルのデータを混合し、別のテーブルと結合します

  23. 23

    あるデータテーブルから別のデータテーブルに列を追加する

  24. 24

    SQLテーブルの行を別のテーブルの列として使用する方法

  25. 25

    データテーブルの行のグループ化

  26. 26

    データベース内の1つのテーブルから、異なる列を持つ別のテーブルに特定の行を挿入します

  27. 27

    HTML テーブルの最初の行と列の後の行

  28. 28

    グループ化されたデータテーブルの複数の行と列の中央値

  29. 29

    HTMLテーブルの列と行にMySQLデータを入力する

ホットタグ

アーカイブ