Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Группировать результат запроса / 6 сообщений из 6, страница 1 из 1
04.11.2018, 17:52
    #39727846
wsxedc83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировать результат запроса
Здравствуйте!
Заранее прошу прощения за глупый вопрос.

Есть таблица с полями:
an_Date an_Type an_Name an_Value an_DimensionDate1 Type1 Name1 Value DimensionDate2 Type1 Name2 Value DimensionDate2 Type2 Name3 Value DimensionDate2 Type2 Name4 Value DimensionDate2 Type3 Name5 Value DimensionDate2 Type3 Name6 Value DimensionDate3 Type3 Name7 Value DimensionDate4 Type3 Name8 Value Dimension

Из неё требуется получить таблицы по каждому типу отдельно:
Type1:
an_Name Date1 Date2 an_DimensionName1 Value Value Dimension
Type2:
an_Name Date2 an_DimensionName3 Value DimensionName4 Value Dimension
Type3:
an_Name Date2 Date3 Date4 an_DimensionName5 Value DimensionName6 Value DimensionName7 Value DimensionName8 Value Dimension

Возможно ли это средствами Oracle SQL или мне на клиенте преобразовывать? Клиент на MsAccess и работает с черепашьей скоростью, так что чем меньше на нем операций - тем лучше.

Заранее спасибо всем, кто найдёт минутку ответить!
...
Рейтинг: 0 / 0
04.11.2018, 19:37
    #39727881
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировать результат запроса
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with t (an_Date, an_Type, an_Name, an_Value, an_Dimension) as (
                  select 'Date1', 'Type1', 'Name1', 'Value1', 'Dimension1' from dual
        union all select 'Date2', 'Type1', 'Name2', 'Value2', 'Dimension2' from dual
        union all select 'Date2', 'Type2', 'Name3', 'Value3', 'Dimension3' from dual
        union all select 'Date2', 'Type2', 'Name4', 'Value4', 'Dimension4' from dual
        union all select 'Date2', 'Type3', 'Name5', 'Value5', 'Dimension5' from dual
        union all select 'Date2', 'Type3', 'Name6', 'Value6', 'Dimension6' from dual
        union all select 'Date3', 'Type3', 'Name7', 'Value7', 'Dimension7' from dual
        union all select 'Date4', 'Type3', 'Name8', 'Value8', 'Dimension8' from dual
)
select * from
(
    select an_Date, an_Name, an_Value, an_Dimension
    from t
    where an_Type = 'Type3'
)
pivot
(
    min(an_Value) for (an_Date) in ('Date2' as Date2, 'Date3' as Date3, 'Date4' as Date4)
)
order by an_name
...
Рейтинг: 0 / 0
05.11.2018, 00:56
    #39727973
wsxedc83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировать результат запроса
SkilledJunior,

Спасибо! Это если заранее известно количество вариантов an_Date и an_Type. А если количество вариантов может быть любое?
...
Рейтинг: 0 / 0
05.11.2018, 01:42
    #39727975
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировать результат запроса
wsxedc83,

Неограниченное число столбцов это как то за гранью разумного.

Можно пойти простым путем, в запросах меняются всего две строки 'TypeХХХ' и 'Date2' as Date2, ...., в цикле собираем динамически запрос для каждого an_Type и выполняем его: EXECUTE IMMEDIATE 'CREATE TABLE an_TypeХХХ as SELECT ...', а дальше что то с этими таблицами делаем.
...
Рейтинг: 0 / 0
06.11.2018, 10:35
    #39728394
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировать результат запроса
wsxedc83А если количество вариантов может быть любое?
Нет ограничения по обоим множествам? (Name/Date)
...
Рейтинг: 0 / 0
06.11.2018, 16:28
    #39728661
wsxedc83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировать результат запроса
envНет ограничения по обоим множествам? (Name/Date)
К сожалению, нет.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Группировать результат запроса / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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