我有兩個數集合,一個包含n id和含有n個值之一。我也有一個包含n條記錄的select語句。現在,我想一起加入他們。 直覺我試圖做這樣的事情: PLSQL - 甲骨文選擇與集合
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 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
其中前者ID和值是從表中,後者的ID和值列是從集合。
所以在where子句結尾:
and status.StatValue <> statusNew.StatValue
會給我改變值的記錄,返回行4 - 7
現在,這看起來有點醜,從我的角度來看。尤其是我在哪裏檢查rownum。無論如何,我對Oracle相對來說比較陌生,有沒有這方面的缺點或更好的方法來實現這一目標?
你是什麼意思?發佈原始數據結構和預期結果 – Hawk
是的,對不起,我編輯了我的文章 – Characeae