私は2つの数のコレクション、1が含むn IDSとnの値を含むものを持って選択します。また、n個のレコードを含むselect文もあります。今、私はそれらに一緒に参加したいです。 は、直感的に、私はこのような何か実行しようとしました:だから PLSQL - Oracleのコレクション
select * from
(
select t.stat StatNr
, t.statNr StatValue
, t.statName statusName
from myTable t
where t.nr = 1234
order by ...
) status,
(
select statId.v StatNr
, statVal.v StatValue
from
(
select column_value v
, rownum r
from table(numberCollection(98, 45, 66, 153, 103, 67, 27))
) statId,
(
select column_value v
, rownum r
from table(numberCollection( 1, 2, 1, 1, 3, 2, 2))
) statVal
where statId.r = statVal.r
) statusNew
where status.StatNr = statusNew.StatNr
and status.StatValue <> statusNew.StatValue
を、番号の収集せずにselect文は次のように返します。
ID VALUE NAME
98 1 some varchar
153 1 some varchar
66 1 some varchar
27 3 some varchar
67 4 some varchar
45 1 some varchar
103 1 some varchar
をそして私は、私からのIDのと値の対応を追加したいですコレクションは、私のテーブルから値の行が私のコレクションから値の列に異なるかどうかを確認した後、名前を戻します。
ので、結果は次のようになります。旧idと値がテーブルからのものであり、後者のidと値の列がコレクションからのもの
ID VALUE NAME ID VALUE
98 1 some varchar 98 1
153 1 some varchar 153 1
66 1 some varchar 66 1
27 3 some varchar 27 2
67 4 some varchar 67 2
45 1 some varchar 45 2
103 1 some varchar 103 3
。
だから、最後にWHERE句:
and status.StatValue <> statusNew.StatValue
が行4帰国、私に変更された値を持つレコードを与えるだろう - 今7.
を、これは私の視点から少し醜いです。特にwhere節でrownumを調べます。とにかく、私はOracleにとって比較的新しいですが、これには欠点やこれを実現するためのより良い方法がありますか?
元のデータ構造と期待される結果を投稿 – Hawk
ええ、申し訳ありませんが、私は私のポストを編集しました – Characeae