0
A
答えて
0
それは基本的なデータ、任意の単一の一意の識別子を持っていないビューのための単一のユニークなID列を戻すことはできませんが、データを一意に識別する複合値を返すことが可能です。次のクエリは、CSVデータをアンピボットう
insert into sample
select 1, 'a' from dual union all
select 2, 'b,c' from dual union all
select 3, 'd,"e",f' from dual union all
select 4, ',h,' from dual union all
select 5, 'j,"",l' from dual union all
select 6, 'm,,o' from dual;
:CSV列がカンマ区切り値の文字列を含む
create table sample (id number primary key, csv varchar2(4000));
たとえば各行の一意のIDとCSVデータのテーブルを与え複合値(ID
、SEQ
)が一意VAL
UEを識別し、ID
列は、データがどこから来たレコードをidetifies、及びSEQ
一意CSV内の位置を特定する:
WITH pvt(id, seq, csv, val, nxt) as (
SELECT id -- Parse out individual list items
, 1 -- separated by commas and
, csv -- optionally enclosed by quotes
, REGEXP_SUBSTR(csv,'(["]?)([^,]*)\1',1,1,null,2)
, REGEXP_INSTR(csv, ',', 1, 1)
FROM sample
UNION ALL
SELECT id
, seq+1
, csv
, REGEXP_SUBSTR(csv,'(["]?)([^,]*)\1',nxt+1,1,null,2)
, REGEXP_INSTR(csv, ',', nxt+1, 1)
FROM pvt
where nxt > 0
)
select * from pvt order by id, seq;
ID SEQ CSV VAL NXT
---------- ---------- ---------- ---------- ----------
1 1 a a 0
2 1 b,c b 2
2 2 b,c c 0
3 1 d,"e",f d 2
3 2 d,"e",f e 6
3 3 d,"e",f f 0
4 1 ,h, [NULL] 1
4 2 ,h, h 3
4 3 ,h, [NULL] 0
5 1 j,"",l j 2
5 2 j,"",l [NULL] 5
5 3 j,"",l l 0
6 1 m,,o m 2
6 2 m,,o [NULL] 3
6 3 m,,o o 0
15 rows selected.
関連する問題
- 1. oracle - 主キーを使用してビューを作成する
- 2. oracleデータベースを使用してログインフォームを作成する方法は?
- 3. のOracle SQL 11gでビューを作成する方法を
- 4. auto_increment idを使用しないスフィンクス
- 5. ビューを使用してクエリを作成する方法
- 6. GUIを使用してID列を作成する方法は?
- 7. Oracle 12cでJSON_TABLEおよびBLOBデータを使用してビューを作成する方法
- 8. ルックアップテーブルを使用して、タイプと親子IDを作成してIDを作成する方法は?
- 9. oracleで動的SQLを使用してレコード・タイプを作成する方法は?
- 10. GROUP BYを使用してSQLでトリガーを作成する方法は? (Oracleデータベース)
- 11. navビルダーを使用してoracle UCM 10gR3でカスタムメニューを作成する方法
- 12. VSTSのIdを使用して作業項目を作成する方法は?
- 13. ビューでリストを使用してDjangoでドロップダウンを作成する方法
- 14. Powershellを使用してSQLのOracleスクリプト(テーブル作成)を実行する方法
- 15. テーブルのIDのリストを作成して、IDを繰り返して別のテーブルで使用する方法
- 16. Oracleでのテンポラリテーブルの使用方法または作成方法
- 17. auto_increment値の列を作成する方法は?
- 18. 複数のビューに一意のIDを作成して使用するOnclick
- 19. Oracleビューを別のビューに基づいて作成する
- 20. UICollectionViewを使用してこの種のビューを作成する方法は?
- 21. oracleからPHPを使用してグラフを作成する方法
- 22. Oracleとauto_increment/identity
- 23. Oracle JoinビューでROWIDを使用する方法
- 24. Telerikレポートウィザードで使用できるOracleストアドプロシージャの作成方法は?
- 25. 別のIDに応じてauto_incrementで1つのIDを作成することは可能ですか?
- 26. 新しいBrightcove Player - ビデオIDを使用してプレイリストを作成する方法
- 27. InnoDBでauto_increment IDをリサイクルしない方法
- 28. oracleビューを使用してOracleで負荷の高いSQLを特定する方法はありますか。
- 29. Oracle 11Gを使用してSQLでテーブルを作成する
- 30. Oracle DatabaseでJRubyを使用してデータベースを作成する
私は達成しようとしていることに従いません。ビューはデータを永続化せず、単にストアドクエリです。基礎となるテーブルに永続的な自動インクリメント列を作成しますか?ビュー内の非永続的な(したがって潜在的に可変な)数値列の増加?他に何か? –
[ROWNUM](https://docs.oracle.com/database/121/SQLRF/pseudocolumns009.htm#SQLRF00255)を使用してください –
データが変更されるとRownumが変更されます。その一貫性はありません –