|
Pivot/CROSSTAB на ApEx 3.1.1
|
|||
---|---|---|---|
#18+
Задача: используя ApEx 3.1.1, создать нечто напоминающее Access CROSSTAB или Сводную таблицу Excel, а именно: 1) разработчик определяет только базовый запрос (SELECT * FROM A) 2) юзверь сам выбирает поля для колонки и групп строк, групповую функцию и поле, по которой она вычисляется (а-ля в мастере Access CROSSTAB или Сводной таблице Excel) 3) базируясь на этой выборке строится отчет (где число колонок заранее неизвестно, т.к. будет зависеть от числа distinct записей по полю, выбранному как колонка на шаге 2) вопросы: кто и как делал пункт 2 (GUI) и пункт 3 (код) и почему? мысли по поводу пункта 3: функция, превращающая любой запрос в CROSSTAB, у меня есть: http://www.sql.ru/forum/actualthread.aspx?tid=409886&pg=-1 стандартный отчет Apex (SQL Report) спокойно на ней работает - в настройках отчета указать Region Definition: - Type - SQL Query (PL/SQL Function returning SQL Query ) - в Region Source написать код: Код: plaintext 1. 2. 3. 4. 5. 6.
Однако хочется использовать Interactive Reports (группировка/фильтры и прочие плюсы), но Interactive Reports не берут на вход "PL/SQL Function returning SQL Query" - только SQL Query! рассмотрены варианты А) с коллекцией: в page process на событие "Before Header" добавить: Код: plaintext 1. 2. 3. 4. 5. 6.
в отчет - строку: Код: plaintext
- работает, но ограничена ширина отчета - макс 50 столбцов Б) вариант с PIPELINED функцией - видимо, не пройдет, если функция во время дизайна должна знать число возвращаемых столбцов какие еще варианты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2008, 15:25 |
|
Pivot/CROSSTAB на ApEx 3.1.1
|
|||
---|---|---|---|
#18+
отвечаю себе: http://forums.oracle.com/forums/thread.jspa?threadID=697760 тут рабочий пример: http://apex.oracle.com/pls/otn/f?p=20819:2 как делается: Create Report - based on PL/SQL ************************************ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Код: plaintext 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. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2008, 18:15 |
|
|
start [/forum/topic.php?fid=50&fpage=98&tid=1877650]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 305ms |
total: | 435ms |
0 / 0 |