Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Если строка не найдена, то значение NULL / 7 сообщений из 7, страница 1 из 1
25.05.2018, 17:08
    #39650042
damir777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если строка не найдена, то значение NULL
Исходные данные:
Табл MyTable
Поля С1 (number), C2 (varchar2)
Записи:
1, Name1
2, Name2
3, Name2

Требуется:
На вход поступает список значений, по каждому из которых
1) отобрать строки по полю С2
2) из полученного резуьтат п1 отобрать строки по максимальному значению поля С1
3) ели строк не найдено вернуть значения - <значние из списка>, "NULL"

Если на вход поступит список значений {Name1,Name2,Name3}, то ожидается получить
Name1, 1
Name2, 3
Name3, NULL

Помогите пож-та с sql-запросом для этого.
...
Рейтинг: 0 / 0
25.05.2018, 17:09
    #39650043
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если строка не найдена, то значение NULL
damir777список значенийouter join
...
Рейтинг: 0 / 0
25.05.2018, 17:45
    #39650068
damir777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если строка не найдена, то значение NULL
outer join насколько мне известео применяется с использованием данных двух таблиц, но в моем случае только одна.
...
Рейтинг: 0 / 0
25.05.2018, 17:51
    #39650074
exp98
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если строка не найдена, то значение NULL
damir777, да её хоть сто раз используй в одном запросе под разными псевдонимами типа
from tab as a, tab as b ....
...
Рейтинг: 0 / 0
25.05.2018, 18:34
    #39650101
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если строка не найдена, то значение NULL
damir777,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare
    l sys.odcivarchar2list := sys.odcivarchar2list('A', 'B', 'X');
begin
    for r in (select t.column_value val_from_list, d.* from table(l) t left outer join dual d on t.column_value = d.dummy)
    loop
        if r.dummy is null then
            dbms_output.put_line(r.val_from_list || ' - Нету в таблице');
        else
            dbms_output.put_line(r.val_from_list || ' - Есть в таблице');
        end if;
    end loop;
end;
...
Рейтинг: 0 / 0
26.05.2018, 10:25
    #39650255
damir777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если строка не найдена, то значение NULL
Всем спасибо, что откликнулись и подсказали.
После выполнения запроса
авторDECLARE
l sys.odcivarchar2list := sys.odcivarchar2list('Name1', 'Name2', 'Name3');
BEGIN
SELECT t.column_value,
MAX(d.C1) AS C1
FROM TABLE(l) t
LEFT OUTER JOIN MyTable d
ON t.column_value = d.C2;
GROUP BY t.column_value;
END;

ожидалось получить табл:
авторcolumn_value, C1
--------------------
Name1, 1
Name2, 3
Name3, NULL
но получаю ошибку
авторORA-06550: line 4, column 3:
PLS-00428: an INTO clause is expected in this SELECT statement
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
Подскажите пож-та, в чем ошибка стурктуры запроса?
...
Рейтинг: 0 / 0
26.05.2018, 10:57
    #39650272
damir777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если строка не найдена, то значение NULL
Не актуально, разобрался. Спасибо еще раз!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Если строка не найдена, то значение NULL / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]