Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Господа, прошу помощи в транспонировании строк в столбцы (DB2 9.1 Z/OS). Есть таблица ТИКЕТ и связанная с ней ТИКЕТ ХИСТОРИ.Тикет_намбер - РК в ТИКЕТ. ТИКЕТ ХИСТОРИ имеет составной РК, в который входит и Тикет_намбер. Одной записи в ТИКЕТ может соответствовать любое кол-во записей в ТИКЕТ ХИСТОРИ. Задача: нужен запрос(не процедура!) который для каждого тикет_намбер возвращает ОДНУ запись где будут аггрегированы ВСЕ записи из ТИКЕТ ХИСТОРИ, относящиеся к этому тикет намберу. Решение: http://it.toolbox.com/blogs/db2luw/pivot-query-12757 НЕ работает, так как может быть несколько хистори записей одного типа, и надо выбрать их все. Решение с использованием xmlaggregate - работает отлично на тест инстансе. НО вот проблема - DB2 Z/OS продакшн инстанс НЕ имеет xml функций! (И ничего с этим сделать нельзя :( ) Задача довольно срочная, прошу помощи! ПС: если нужно могу выложить ДДЛ таблиц и работающий запрос с xml функциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2011, 12:45 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Vlad251470, Если у вас действительно DB2 for z/OS версии 9.1, то функция XMLAGG там есть в обязательном порядке, т.к. это часть "движка" версии 9.1. Что выдаст следующий запрос на вашей системе DB2 for z/OS? Код: plaintext 1. 2. 3. 4. 5. 6. Должен вернуть: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2011, 14:28 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
возвращает: 5:03:17 [SELECT - 0 row(s), 0.000 secs] [Error Code: -270, SQL State: 42997] DB2 SQL Error: SQLCODE=-270, SQLSTATE=42997, SQLERRMC=null, DRIVER=3.57.82 ... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec [0 successful, 0 warnings, 1 errors] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2011, 16:04 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Vlad251470, Понимаю, что это не ответ на изначальный вопрос, но, либо указанная подсистема не является полнофункциональной (New Function) 9.1, т.е. либо это более низкая версия, или же в ней еще идет процесс миграции в 9-ку (режим Compatibility Mode). Но, возможно что тут идет сквозное подключение к еще одной удаленной подсистеме. Т.е. физически эта таблица находится не в той подсистеме, к которой выполнено подключение, а в еще одной, которая "спрятана" за этой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2011, 17:42 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Хоть и не ответ, но все равно спасибо за внимаие:) Скорее всего - второе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2011, 18:05 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Vlad251470, Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 11:12 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо за подсказку! :) Буду пытаться прикручивать к своим таблицам (надо еще результат выдать в json). Сам начал отлаживать две временные таблицы, как у вас - но: -либо у меня всегда выбиралась только запись первого тикета (в вашем примере - 1 t1_h1, t1_h2) -либо упирался в -433 ошибку (Short Description: VALUE IS TOO LONG)- возможно потому что отлаживал без заключительных джойнов, просто с select * по второй временной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 18:55 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, еще раз огромное спасибо за помощь! Запрос: Код: sql 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. работает отлично, НО - только если кол-во записей в первой временной таблице невелико. Стоит закомментировать where в ticket_history_o - запрос на 300К записей работает очень долго (честно мне не удалось дождаться его окончания, прибил после 30 минут.) Также долго работает и простая выборка из а: with Код: sql 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. Это из-за того что а не имеет индексов? Или я чтото сделал не так? Как проверить не входит ли в бесконечную рекурсию? Можно ли както оптимизировать? ПС: Данные в тикет хистори стянуты с продакшена, так что скорее всего они корректные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 12:31 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Vlad251470, 1. Если вы используете нумерацию внутри группы из 2-х полей: Код: plaintext Код: plaintext Код: plaintext и соотв. вместо Код: plaintext Код: plaintext 2. Можете создать временную таблицу и соотв. в запросе обращаться к ней: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 14:16 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, 1- не придал значения т к тест. данные уникальны по тикет намбер. Поправил. Производительность НЕ улучшилась. Попробую через декларе с индексом. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 18:32 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Предлагаю попробовать ленивый способ - залить данные в DB2 for Unix/Linux/Windows (пробную или Express-C), собрать статистику и спросить её Index Adviser, что он думает по поводу вашего запроса. А он может насоветовать кучу полезных индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2011, 23:38 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa, есть инстанс с похожими данными на аиксе, но у меня нет доступа ни к одному из дб2 серверов:(. Попробую спросить админов насчет индекс адвайзера. Спасибо за совет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2011, 12:41 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Цены на память так упали, что я на днях без напряга собрал себе "домашний" писюк с 24 гигами ОЗУ (сокет 1366). Не за горами большое падение цен на 8-гиговые модули, можно будет на сокете 1155 набивать по 32 гига по малой цене. SATA-диски хоть подорожали, но ведь их объёмы таки гигантские, по совсем недавним меркам, много каких баз можно разместить. В продакшен такое, конечно, нельзя, но для развлечений вполне сойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2011, 16:15 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa, под какой системой эти 24 гига? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2011, 17:03 |
|
||
|
Опять pivot!
|
|||
|---|---|---|---|
|
#18+
Vlad251470, какая разница, какая система? На своём компьютере можно переставлять систему и ставить СУБД хоть каждый день по нескольку раз, и не надо ни у кого ничего спрашивать. Это свобода. Я, конечно, хотел, чтобы раскошелилась моя контора, но, в конце концов, пожав плечами, купил сам. Конечно, DB2 for Z/OS и for LUW - это далеко не одно и то же, но, тем не менее... Впрочем, быть может, на мэйнфреймовой DB2 тоже есть Index Adviser, но мне она абсолютно недоступна и я потому не вижу смысла интересоваться его наличием. На DB2 for LUW он может давать гигантское ускорение, а принципы схожи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2011, 23:01 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=37567829&tid=1601992]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 269ms |

| 0 / 0 |
