powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Номер записи
10 сообщений из 35, страница 2 из 2
Номер записи
    #32169940
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, всё это не то. Join здесь ни причём. Это действительно интересный вопрос - как сделать запрос, возвращающий переменное число ПОЛЕЙ в зависимости от существования данных. Т.е., например, если на Складе1 есть Товар1 и Товар2, на Складе2 Товара1 нет, но есть Товар2, то запрос должен вернуть должен вернуть
Name Склад1 Склад2
Товар1 20
Товар2 10 30
Если существуют ещё склады, на которых ничего нет, то они и не выводятся в качестве полей.
Например, в Access это делается элементарно - там есть конструкция
TRANSFORM...
Select...
PIVOT...
А в навороченном Oracle, похоже нет такой возможности.
Или есть?
...
Рейтинг: 0 / 0
Номер записи
    #32169945
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дамс задачка интересная!
...
Рейтинг: 0 / 0
Номер записи
    #32169969
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сказали же вам уже много раз ищите на этом форуме по ключевым словам cast или multiset.

P.S. До чего же народ упрямый и невнимательный.
...
Рейтинг: 0 / 0
Номер записи
    #32169978
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftBuilder, Точно.
...
Рейтинг: 0 / 0
Номер записи
    #32169989
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, нашли уже :)
...
Рейтинг: 0 / 0
Номер записи
    #32169992
no name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
упс. забыл :))
...
Рейтинг: 0 / 0
Номер записи
    #32170081
raven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если multiset не устраивает (действительно не панацея), то подобный запрос можно сбацать через процедуру, которая возвращает тип table of <запись>.
Сразу скажу что без днамического SQL здесь не обойтись.

Поэтому если вам нужен только отчет и не нужен дополнительный гимор, то получайте его сторонними продуктами (возьмите тот же Excel, Developer). Никаких Pivot в Oracle нет.

2softbuilder@inbox.ru
Походу дела нужен сводный отчет, только почему то товарищ умалчивает об этом и приводит всякие join чтобы сбить народ с толку.

2bjohny
Вы хоть сами определились что вам надо? Суда по вашим постам - прогнило что-то в Датском Королевстве
...
Рейтинг: 0 / 0
Номер записи
    #32170082
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bjohny,
киньте ссылку на то, что Вы нашли.
...
Рейтинг: 0 / 0
Номер записи
    #32170127
Al'Exander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Статический запрос с динамическим количеством столбцов в Оракл сделать нельзя. И вообще я такого не видел. Потому что не нужно.

Варианты решения:
1. Если нужно просто получить инфу в таком виде -- пишем функцию, в которую будет передаваться ID, и которая будет возвращать строку с нужными разделителями (таб, пробел...)

Запрос:
SELECT T1.ID, T1.FIO, GetCourList( T1.ID )
FROM Table1 T1;

Функция:
create or replace function GetCourList( pID in Integer ) return String as
cursor c1 is select * from Table2 where ID = pID;
sResult String(32767);
begin
for x in c1 loop
sResult := sResult || ' ' || x.COUR;
end loop;
return SubStr(sResult,2);
end;

2. Запрос выполняется в том виде, в котором он получается естественным путем, а уже клиентское приложение разносит данные по нужным столбцам и динамически их создает. Для этого нужно написать свой компонент.
...
Рейтинг: 0 / 0
Номер записи
    #32170261
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Номер записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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