1

皆さん、

名前と値のペアを持つ oracle データベース テーブルがあります。名前と値のペアのセットは、row_num によって識別されます。またセットサイズが異なる場合がございます。

名前と値のペアのセットをビューの 1 つの行に変換するビューを作成したいと考えています。

私の質問が明確であることを願っています

この定義の仕方を教えてください

便宜上、テーブルの作成と挿入のためのサンプルSQLを提供しました

ありがとう

create table name_value_pair (row_num varchar2(32), name varchar2(32),value varchar2(32));

insert into name_value_pair values ('row1', 'Col1', 'Val11');
insert into name_value_pair values ('row1', 'Col2', 'Val12');
insert into name_value_pair values ('row1', 'Col3', 'Val13');
insert into name_value_pair values ('row1', 'Col4', 'Val14');
insert into name_value_pair values ('row1', 'Col5', 'Val15');

insert into name_value_pair values ('row2', 'Col1', 'Val21');
insert into name_value_pair values ('row2', 'Col2', 'Val22');
insert into name_value_pair values ('row2', 'Col3', 'Val23');
insert into name_value_pair values ('row2', 'Col4', 'Val24');
insert into name_value_pair values ('row2', 'Col5', 'Val25');

insert into name_value_pair values ('row3', 'Col1', 'Val31');
insert into name_value_pair values ('row3', 'Col2', 'Val32');
insert into name_value_pair values ('row3', 'Col3', 'Val33');
insert into name_value_pair values ('row3', 'Col4', 'Val34');
insert into name_value_pair values ('row3', 'Col5', 'Val35');

insert into name_value_pair values ('row4', 'Col1', 'Val41');
insert into name_value_pair values ('row4', 'Col2', 'Val42');
insert into name_value_pair values ('row4', 'Col3', 'Val43');
insert into name_value_pair values ('row4', 'Col4', 'Val44');
insert into name_value_pair values ('row4', 'Col5', 'Val45');

insert into name_value_pair values ('row5', 'Col1', 'Val51');
insert into name_value_pair values ('row5', 'Col2', 'Val52');
insert into name_value_pair values ('row5', 'Col3', 'Val53');
insert into name_value_pair values ('row5', 'Col4', 'Val54');
insert into name_value_pair values ('row5', 'Col5', 'Val55');

commit;
4

1 に答える 1

1

ビューを作成するときにクエリを使用できます。

select
  row_num, 
  max(decode(name, 'Col1', value)) col1, 
  max(decode(name, 'Col2', value)) col2,
  ...
from name_value_pair
group by row_num;

おそらく、データ モデルを再検討する必要があります。この種のデータモデルは最悪です。クエリは最適化できず、制約を設定するのが難しく、データの整合性を維持することはほとんど不可能です。

于 2012-07-18T03:32:26.220 に答える