Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Перекрёстный запрос, транспонирование / 9 сообщений из 9, страница 1 из 1
17.03.2012, 10:16
    #37709653
Ra1990
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
Здравствуйте, понимаю тема заезженная, слабый в oracle, поэтому сильно не пинайте(, помогите разобраться.

Есть таблица:
fruits data kommentАрбуз 20.02.2012 абвАрбуз 21.02.2012 123Лимон 22.02.2012 гдеЛимон 20.02.2012 456Апельсин 20.02.2012 123Апельсин 22.02.2012 789

Нужно получить перекрёстную:
fruits 20.02.2012 21.02.2012 22.02.2012Арбуз абв 123 -Лимон 456 - гдеАпельсин 123-789

Количество дат не фиксированное, могут добавляться.

Видимо задача решается так: , Но не могу понять как будет выглядеть вызов пакета в моём случае и где этот вызов прописать(, чтобы результат отобразился в reportе, если пользуюсь APEX? Есть ли, альтернативные варианты [более простые] решения задачи?
Спасибо за внимание.

Oracle 11g R2 Express Edition, APEX 4.0
...
Рейтинг: 0 / 0
17.03.2012, 11:01
    #37709679
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
'в аксессе, екселе....... чтобы не возиться со столбцами применяла прием
'размер и ориентацию бумаги можно прописать(и шрифт)
Dim rst As DAO.Recordset
Dim s1
Dim j1, j2
Public Sub a120317_1033()

s1 = ""
s1 = s1 & "TRANSFORM Count(w.[Код]) AS [Count-Код]"
s1 = s1 & " SELECT w.[Источник поступления информации], Count(w.[Код]) AS [Итого]"
s1 = s1 & " FROM [наряд-задание] w"
s1 = s1 & " where Format([Дата(наряд-задание)],'yyyy')='2012'"
s1 = s1 & " GROUP BY w.[Источник поступления информации]"
s1 = s1 & " PIVOT Format([Дата(наряд-задание)],'yyyy-mm-dd');"
form_perekrest s1, "c:\rab\ot1.htm", "explorer"
' explorer
' word
' excel
End Sub
Sub form_perekrest(zsql, zname, Optional zreg As String = "e")
Set rst = CurrentDb.OpenRecordset(zsql)
Open zname For Output As #1
Print #1, "<html>"
Print #1, "<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"" />"
Print #1, "<table border=1 width=100% cellspacing=0 cellpadding=0>"
Print #1, "<thead>"
Print #1, "<tr>"
j1 = 0
j2 = rst.Fields.Count
Do While j1 < j2

Print #1, "<th>", rst.Fields(j1).Name
j1 = j1 + 1
Loop
Print #1, "</thead>"
Print #1, "<td>", "text2"
Do While rst.EOF = False
Print #1, "<tr>"
j1 = 0
j2 = rst.Fields.Count
Do While j1 < j2

Print #1, "<td>", Nz(rst.Fields(j1).Value, "-")
j1 = j1 + 1
Loop
rst.MoveNext
Loop
Print #1, "</table>"
Print #1, "</html>"
Close #1
If zreg = "word" Then
j1 = Shell("winword.exe c:\rab\ot1.htm", vbNormalFocus)
ElseIf zreg = "excel" Then
j1 = Shell("excel.exe c:\rab\ot1.htm", vbNormalFocus)
Else
j1 = Shell("explorer.exe c:\rab\ot1.htm", vbNormalFocus)
End If

End Sub
...
Рейтинг: 0 / 0
18.03.2012, 10:16
    #37710403
Ra1990
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
Выше хотел так написать: ...Видимо задача решается так: Транспонирование строк в столбцы в RefCursor'е , Но...
...
Рейтинг: 0 / 0
19.03.2012, 12:33
    #37711541
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
Ra1990,

Для апекса подойдет любое решение SQL / PL/SQL.
Для PL/SQL есть тип региона function body returning sql query.

STFF
...
Рейтинг: 0 / 0
19.03.2012, 12:56
    #37711596
Ra1990
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
SvDev,

а как будет выглядеть PL/SQL функция для вызова пакета для моей задачи?
...
Рейтинг: 0 / 0
19.03.2012, 13:20
    #37711627
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
2Ra1990
Если вы просите привести пример использования региона function body returning sql query.

Примерно так
Код: plsql
1.
2.
3.
4.
5.
6.
declare
...
begin
  ...
  return 'select...';
end;



По ссылке 7 страниц тем с примерами, если по прежнему не можете написать, вам в тему работа...
...
Рейтинг: 0 / 0
19.03.2012, 13:51
    #37711680
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
Добавлю, если хотите использовать этот пакет,
то sys_refcursor вам не нужен, возвращайте из пакета код запроса.
...
Рейтинг: 0 / 0
19.03.2012, 16:16
    #37711976
Ra1990
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
SvDev,

Вот беда( ну ни как не справлюсь ((( Понял так парамтр p_cursor=>:x не нужен,
но с этими так и не разберусь что писать:
p_max_cols_query =>
p_query =>
p_anchor =>
p_pivot =>
...
Рейтинг: 0 / 0
19.03.2012, 18:19
    #37712251
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрёстный запрос, транспонирование
Ra1990,

Чтобы вашему преподу понравилось:

p_max_cols_query => Коньяк
p_query => Конверт
p_anchor => Цветы
p_pivot => Конфеты
p_cursor=> Пиджак+бабочка

P.S.
По теме, не хотите разбираться (а там всего-то 50 строчек кода надо разобрать, весьма примитивных) пишите сюда
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Перекрёстный запрос, транспонирование / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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