私は次のような表を持っています。oracleのレコードの複製
ID DATE1 DATE2 DATE3 DATE4
1 01/01/17 02/01/17 03/01/17 04/01/17
は今、私は、クエリを構築する上で私を助けてください、次の
ID DATE
1 01/01/17
1 02/01/17
1 03/01/17
1 04/01/17
のようになります。この表から選択した後に新しいテーブルを作成したいです。
私は次のような表を持っています。oracleのレコードの複製
ID DATE1 DATE2 DATE3 DATE4
1 01/01/17 02/01/17 03/01/17 04/01/17
は今、私は、クエリを構築する上で私を助けてください、次の
ID DATE
1 01/01/17
1 02/01/17
1 03/01/17
1 04/01/17
のようになります。この表から選択した後に新しいテーブルを作成したいです。
最も簡単な方法は、しばしばあるだけunion all
:あなたは本当に大きなテーブルを持っている場合は
SELECT ID, DATE1 as date FROM t UNION ALL
SELECT ID, DATE2 as date FROM t UNION ALL
SELECT ID, DATE3 as date FROM t UNION ALL
SELECT ID, DATE4 as date FROM t;
が、これは、テーブルを複数回スキャンします。パフォーマンスが潜在的な問題である場合は、選択肢があります。
私はあなたがUNPIVOTについて読むことをお勧めします。あなたに解決策を与えて、答えをコピーすると、この素晴らしいコンセプトはSQLには気づかれなくなります。
https://oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1
'UNPIVOT'をチェックしてください。 – jarlh
どのOracleのバージョンを使用していますか? –
@SrikanthAでは、テーブルT( "DATE" DATE);を作成できますが、実際にはお勧めしません。 –