Значение из поля имя указано в другом поле

r00xus
Дата: 07.10.2015 11:27:38
Здравствуйте.

Возможно ли в PL/SQL реализовать выборку, для каждой строки которой значение поля VAL будет браться из поля, имя которого указано в поле FIELD_NAME как показано ниже?

FIELD_NAME|FIELD1|FIELD2|VAL
----------------------------
FIELD1     1      2      1
FIELD1     3      4      3
FIELD2     3      4      4
yes_poss
Дата: 07.10.2015 11:35:14
r00xus,

Да, - возможно.
_kyky
Дата: 07.10.2015 11:38:18
r00xus,

select
case when FIELD_NAME='FIELD1' then FIELD1
....
Vadim Lejnin
Дата: 07.10.2015 11:39:16
r00xus
Здравствуйте.

Возможно ли в PL/SQL реализовать выборку, для каждой строки которой значение поля VAL будет браться из поля, имя которого указано в поле FIELD_NAME как показано ниже?

FIELD_NAME|FIELD1|FIELD2|VAL
----------------------------
FIELD1     1      2      1
FIELD1     3      4      3
FIELD2     3      4      4

Можно
CASE
Для SQL есть еще оператор decode
DECODE
r00xus
Дата: 07.10.2015 11:46:23
до CASE и DECODE и я додумался :) а динамически как-то можно? без статического перебора всех FIELD1 ... FIELDN?
-2-
Дата: 07.10.2015 11:55:19
r00xus
в PL/SQL реализовать выборку
выборку куда?
_kyky
Дата: 07.10.2015 12:11:18
-- тогда сначала генерим запрос -> select case ....
for i in
(
select distinct FIELD_NAME ...
)
loop


-- потом исплняем
r00xus
Дата: 07.10.2015 12:40:41
_kyky
-- тогда сначала генерим запрос -> select case ....
for i in
(
select distinct FIELD_NAME ...
)
loop


-- потом исплняем

насколько я понял вы имеет в виду метод, при котором я сначала выбираю все уникальные значения поля FIELD_NAME а потом строю динамический запрос с CASE внутри для поля VAL. но это как-то громоздко...

а нет ли в Oracle возможности как-то обратиться в запросе или в процедуре к полю таблицы не статически типа SOME_TABLE.FIELD1 а как-то динамически просто задав его имя в виде строки?
Elic
Дата: 07.10.2015 12:48:23
r00xus
а нет ли в Oracle возможности как-то обратиться в запросе или в процедуре к полю таблицы не статически типа SOME_TABLE.FIELD1 а как-то динамически просто задав его имя в виде строки?
Нет.
ArtNick
Дата: 07.10.2015 12:49:51
r00xus,
declare
 vTable_name varchar2 (4000) :='dual';
begin
execute immediate 'select 1 from '||vTable_name;
end;

так?