У меня есть две коллекции чисел, одна из которых содержит n идентификаторов и одну, содержащую n значений. У меня также есть оператор select, содержащий n записей. Теперь я хочу присоединиться к ним вместе. Наглядно я пытался сделать что-то вроде этого: 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
Таким образом, оператор выбора без сбора чисел возвращает что-то вроде этого:
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 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
Где бывший идентификатор, и значение из таблицы и последние идентификаторы и стоимостные столбцы из коллекций.
Так пункт, где в конце:
and status.StatValue <> statusNew.StatValue
дал бы мне записи с измененными значениями, возвращая строку 4 - 7.
Теперь это выглядит немного уродливые, с моей точки зрения , Особенно предложение where, где я проверяю rownum. Во всяком случае, я относительно новичок в Oracle, есть ли недостаток этого или лучший способ добиться этого?
Что вы подразумеваете под «присоединяйся к ним вместе». опубликовать исходную структуру данных и ожидаемый результат – Hawk
Да, извините, я отредактировал мой пост – Characeae