SQLクエリ転置列 -- sql フィールド と oracle11g フィールド 関連 問題

SQL query transposing columns












0
vote

問題

日本語

次の構造の表があります。

<事前> <コード> id | att1 | att2 | att3 ----------------------- 1 | a1 | b1 | c1 2 | a2 | b2 | c2 3 | a3 | b3 | c3

と各IDの行になるように列を転置したいです。このように:

<事前> <コード> id | attname | value ------------------------ 1 | att1 | a1 1 | att2 | b1 1 | att3 | c1 2 | att1 | a2 2 | att2 | b2 2 | att3 | c2 3 | att1 | a3 3 | att2 | b3 3 | att3 | c3

私はピボット機能を読んでいて、仕事やその使い方ができるかどうかはわかりませんでした。あらゆる助けが高くなるでしょう。

英語

I have a table in the following structure:

id | att1 | att2 | att3 ----------------------- 1  |  a1  |  b1  |  c1 2  |  a2  |  b2  |  c2 3  |  a3  |  b3  |  c3 

And I want to transpose the columns to become rows for each id. Like this:

id  |  attname  |  value ------------------------ 1   |   att1    |   a1 1   |   att2    |   b1 1   |   att3    |   c1 2   |   att1    |   a2 2   |   att2    |   b2 2   |   att3    |   c2 3   |   att1    |   a3 3   |   att2    |   b3 3   |   att3    |   c3 

I was reading up on the PIVOT function and wasn't sure if it would do the job or how to use it. Any help would be appreciated.

</div
     
   
   

回答リスト

-1
 
vote
vote
ベストアンサー
 

do UNION ALL

<事前> <コード> select id, 'att1' as attname, att1 as value from tablename union all select id, 'att2' as attname, att2 as value from tablename union all select id, 'att3' as attname, att3 as value from tablename

VALUE はSQLの予約語であるため、それがあなたの本当の列名であれば、 "value"

を二重引用する必要がある場合
 

Do UNION ALL:

select id, 'att1' as attname, att1 as value from tablename union all select id, 'att2' as attname, att2 as value from tablename union all select id, 'att3' as attname, att3 as value from tablename 

Note that VALUE is a reserved word in SQL, so if that's your real column name you need to double quote it, "value".

</div
 
 
 
 
1
 
vote

このタスクのUnpivotを使用できます。

<事前> <コード> SELECT * FROM table UNPIVOT ( value FOR att_name IN (att1 as 'att1', att2 as 'att2', att3 as 'att3') );
 

You can use unpivot for this task.

SELECT * FROM   table UNPIVOT ( value FOR att_name  IN (att1 as 'att1', att2 as 'att2', att3 as 'att3') ); 
</div
 
 
0
 
vote

これは別の方法です:

<事前> <コード> SELECT id,attname, value FROM Yourtable CROSS APPLY ( VALUES ('att1',att1), ('att2',att2), ('att3',att3)) t(attname, value)
 

Here is another method :

SELECT id,attname, value  FROM Yourtable  CROSS APPLY ( VALUES ('att1',att1), ('att2',att2), ('att3',att3)) t(attname, value) 
</div
 
 

関連する質問

2  Oracleに乱数を生成します  ( Generate random number in oracle ) 
私のプロジェクトのいずれかで、私は1から2000まで乱数を生成し、それらをTable.iに保存する必要があります。テーブルに2000の値を保存する必要があります。テーブルに異なる値を保存する必要があります。 Oracle.Iでこれを行うHOEは、Oracle ...

0  ヌルゲブをキャッチしてコメントを表示する方法  ( How to catch null vales and display comment ) 
私はバスカッククエリを持っています: <事前> <コード> ParentId0 更新 BAISCLY、 アップロード中は、 ParentId1 が ParentId2 の内側にあるかどうかを確認しています。 そうであれば、 ParentId4 値を指...

2  テーブルから列名を取得する方法  ( How to fetch column names from table ) 
Oracleの列名フォームテーブルをフェッチしようとしています。しかし、私は列名を取得していません。 私はたくさんのクエリを使いました、そして、見つけるかもしれませんが、Stack Overflowでクエリを照会するかもしれませんが、私は答えませんでした。 ...

4  Oracle 11g。スキーマが作成されていても、ダンプファイルをインポートできません  ( Oracle 11g unable to import dump files even though schema is created ) 
次のスクリプトを使用して、Oracle 11gR2にユーザーを作成しました。 <事前> <コード> create user cata identified by cata default tablespace tbs tem...

1  SQL - 別のタプルへの属性があるだけの属性があるテーブルを実装するにはどうすればよいですか。  ( Sql how do i implement a table where few attributes are just references to ano ) 
私は以下のSQL表を持っています: - <事前> <コード> > select * from table1; |--------------------------------------------------| | ID | A1 | ...

2  Oracleで電子メールをトランザクション的に送信することは可能ですか?  ( Is it possible to transactionally send an email in oracle ) 
私はこのようなことをする場合の数のケースがあります: <事前> <コード> ... do some database action ... COMMIT; if ( commit succeeded without error ) { send an ...

0  Oracle SQLの単一列に日付範囲を格納する  ( Store date range in a single column in oracle sql ) 
ここに1回のactivity_codeを含み、1日でも一日で終了し、他のほとんどのアクティビティは1日だけですが、1日を超える旅行が1回あります。 その列の日付範囲を1日以上及ぶ最良の方法が可能です。 列を複数の開始日に分割し、終了日は空白の列が多いので意...

17  このクエリでは、Oracleが「ORA-00918:Columnがあいまいに定義されている」を上げられないのはなぜですか?  ( Why doesnt oracle raise ora 00918 column ambiguously defined for this query ) 
私はオラクルの奇妙な行動に遭遇したばかりで、ORA-00918が提起されることが期待されていませんが、そうではありません。たとえば、このクエリを取ります。 <事前> <コード> SELECT * FROM USER_TABLES TAB JOIN USER_T...

6  カーソルからのユニオンデータ  ( Union data from cursors into one ) 
私は、別のストアドプロシージャを数回実行するストアドプロシージャを持っています。私は連合と返品データを返します。これは、2番目の手順を実行した後に持っています。 複数のカーソルからの一部のユニオンデータでは、互いに互いのカーソルへのユニオンデータができますか?...

1  NET Oracle Data Providerのトランザクションロールバックが働いていません  ( Net oracle data provider transaction rollback not working ) 
だからこれは問題です。 Tableaに挿入し、その新しい行IDを取得する必要があります。その後、そのIDをtablebに挿入する必要があります。 TableBに挿入しようとすると、外部キー例外が得られないように、挿入後にコミットする必要があります。 今、私...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有