Oracle Функция декодирования - Dynami c Поиск - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть следующая функция декодирования, которая содержит жестко закодированные значения:

decode(s.manure_type,
                   'OA','Oats',
                   'V','Velvet Beans',
                   'O','Other',
                   'N','None',
                   'SW','Soya Beans Without Grains',
                   'SR','Sunn Hemp',
                   'C','Cowpeas',
                   'S','Soya Beans With Grains',
                   'F','Forage Sorghum',
                   'J','Jap Millet',
                   'G','Grazing Vetch') s_manure_type

Я хочу, чтобы декодирование было динамическим c. Все значения взяты из другой таблицы. Так же и начальное выражение из другой таблицы. Есть ли какая-либо возможность получить из базы данных значения овса, бархатных бобов, других, нет, соевых бобов без злаков, пеньки, вигны, соевых бобов с злаками, фуражного сорго, яичного проса и вики-пастбища?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

вам не нужно "DECODE", вы можете сделать это так:

create table prm (
id varchar2(2),
name varchar2(100));

insert into prm values ('OA','Oats');
insert into prm values ('V','Velvet Beans');

select v.name from manure_types s, prm v
where s.manure_type = v.id
0 голосов
/ 04 февраля 2020

Но тогда вам даже не понадобится DECODE - это будет JOIN, например

select a.something,
       b.manure_name
from tab1 a join manure b on a.manure_type = b.manure_type
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...