powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Если строка не найдена, то значение NULL
7 сообщений из 7, страница 1 из 1
Если строка не найдена, то значение NULL
    #39650042
damir777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходные данные:
Табл 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
Если строка не найдена, то значение NULL
    #39650043
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
damir777список значенийouter join
...
Рейтинг: 0 / 0
Если строка не найдена, то значение NULL
    #39650068
damir777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
outer join насколько мне известео применяется с использованием данных двух таблиц, но в моем случае только одна.
...
Рейтинг: 0 / 0
Если строка не найдена, то значение NULL
    #39650074
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
damir777, да её хоть сто раз используй в одном запросе под разными псевдонимами типа
from tab as a, tab as b ....
...
Рейтинг: 0 / 0
Если строка не найдена, то значение NULL
    #39650101
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Если строка не найдена, то значение NULL
    #39650255
damir777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, что откликнулись и подсказали.
После выполнения запроса
автор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
Если строка не найдена, то значение NULL
    #39650272
damir777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не актуально, разобрался. Спасибо еще раз!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Если строка не найдена, то значение NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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