|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Добрый день! Ситуация такая: есть таблица, в которой, условно говоря, для одной логической записи (сотрудник) может существовать несколько строк. У каждой такой строки есть колонка " FLAG ", со значениями: 0,1,2,3. Сделано это для того, чтобы на основании флажков брать определенную ячейку и выводить ее на печать. Т.е., например, 0 - это заголовок, тогда берется колонка 0, 1 - главные данные сотрудника, колонка 1а, 1б, 1в и т.д., 2 - какой-нибудь подытог для записи, агрегированный из других таблиц, колонка 2. В уже готовой процедуре печати отчета есть запрос к этой таблице с указанием order by clmn1, clmn2, clmn3, clmn4. Если поменять порядок сортировки, то все разъедется и будет непонятно, как записи друг с другом связаны в пределах одного сотрудника, так как уникальный номер сотрудника указан только в строке с флагом 1. Т.е. вся эта хлипкая конструкция держится за счет сортировки. Вопрос: как можно связать эти записи с флажками, чтобы их можно было разгруппировать, но при этом не сломать всю структуру? Это мне нужно например, чтобы "навесить" сверху еще одну сортировку по другой колонке. Помогите, пожалуйста, разобраться. Буду очень признателен за помощь. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 16:15 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Лучше этот вопрос задать тому чудаку, который такую структуру спроектировал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 16:22 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Там, к сожалению, от комментариев воздержались. А у меня не хватает пока опыта, чтобы такую "конструкцию" переварить. Может, есть у кого идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 16:36 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, Покажите пример данных и ожидаемый результат. По описанию - пока выглядит бредово. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 16:50 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906 вся эта хлипкая конструкция держится за счет сортировки. В таблице всегда записи только одного пользователя? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 16:50 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, Похоже, что какой-то чудак однажды навытягивал данные из разных таблиц, а потов через union слил их в одну. Я такое видел. Но операция обратима. Постройте запрос который вернёт одну строку на сотрудника, и работайте с ним. Вместо ID, Flag, Property 5785, 0, уборщик, 5785, 1, Васильев 5785, 2, Игорь Сделайте ID, Title, LastName, FirstName 5785, уборщик, Васильев, Игорь Для таблицы выше это было бы так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Если для некоторых сотрудников определенные атрибуты отсутствуют, в колонке результата будет null. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 16:58 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Обычно ответ приходит быстрее и лучше, если ТС включает в вопрос больше данных о структурах таблиц, или пример неработающего кода. Иначе отвечающему приходится выдумывать свои имена колонок, и спрашивающему больше работы сопоставлять свое с чужим. Всем больше работы -> качество помощи ниже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:03 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL, Вам книжку пора писать. "Вредные советы" называется. Сами свой код пробовали выполнить хотя бы на своих трёх строках? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:06 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Для транспонирования столбца в строку есть pivot, либо агрегация через case. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:08 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
env НеофитSQL, Вам книжку пора писать. "Вредные советы" называется. Сами свой код пробовали выполнить хотя бы на своих трёх строках? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Поправил очевидную ошибку. (and Flag = ..) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:20 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
За мелкие ошибки заранее извиняюсь, пишу с пляжа. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:24 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL, А очевидную ошибку в ненужной выборке уникальных значений id и ненужных самоджойнов поправить ещё проще. Но это не имеет никакого отношения к задаче ТС. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:27 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, если для сотрудника всегда есть флаг=1 (ид сотрудника), то его (ИД) можно распростанить на другие флаги (строки) 1) для флаг>1 2) и для флаг<1 (0) самое простое ето last_value ignore nulls так как есть флаги меньше 1, то возможно придется поизголятся а и да, если версия (12+) позволяет то match_recognize ps order by clmn1, clmn2, clmn3, clmn4. задает порядок однозначно ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:28 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Stax, Предлагаю дождаться ответа ТС с примером данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:34 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Прошу прощения, таблицу смог приложить только в виде вложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:39 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Скинул основные колонки. Там есть еще, но там только суммы. Получается, что при FLAG=0,печатается заголовок. Если FLAG=1, то данные по сотруднику: ФИО, часть сумм. FLAG=2 и 3 - итоговые суммы. Сортировка в скрипте жесткая: Код: plsql 1.
А мне надо, чтобы данные выводились по колонке "DEPT": сначала все записи по первому DEPT (подразделению), потом по следующему и до конца. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:45 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
т.е. чтобы DEPT=Администрация со всеми связанными записями, потом DEPT="Акушерское...", потом три человека из DEPT=Бухгалтерия со всеми связанными записями. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:48 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906Там, к сожалению, от комментариев воздержались. Долби пока не расколются. Они же наверняка знают как к их собственной структуре писать запросы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:49 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906А мне надо, чтобы данные выводились по колонке "DEPT" Ну так поставь DEPT первым полем в жёсткую сортировку. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:54 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, Что-то не договариваете. В order by как минимум два алиаса - значит таблиц больше и есть поля для связи между ними. Показывайте весь запрос или как минимум его значащие части. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:54 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
env НеофитSQL, А очевидную ошибку в ненужной выборке уникальных значений id и ненужных самоджойнов поправить ещё проще. Но это не имеет никакого отношения к задаче ТС. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
pivot классная команда, я ей еще не пользовался, и на этом форуме за последние месяцы не видел. Вы правильно заметили, что присутствует выборка уникальных значений, но возможно не поняли ее роли в моем запросе. Вы думаете, от нее можно избавиться, и получить результат такой же, как pivot? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 18:24 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906 т.е. чтобы DEPT=Администрация со всеми связанными записями, потом DEPT="Акушерское...", потом три человека из DEPT=Бухгалтерия со всеми связанными записями. 1) строки с флаг 0 я так понял можно выбросить 2)колонку dept заполните передыдущем значением (напр dept_srt) 3)отсортируйте по dept_srt,E.ORDNUMB, PSTGRPNUM, A.FLAG, POST, A.IS_VAK, FIO ps если не получится пишите зыы ленюсь набирать данные с картинки ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 18:36 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, вот в этом вашем "там есть ещё" весь настоящий торф и сидит. вы не показали ни одного из тех начальных столбцов, который входят в волшебный order by. а, между тем, какое-то стартовое подмножество из этого order by - первые три или четыре поля и образуют составной ключ, который вы и должны в любом случае учесть, чтобы получить любой другой нужный вам порядок сортировки. Хм, сдается, "там" вам весьма разумно не ответили... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 18:50 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, Пример данных в исходных таблицах дайте, можете обезличить, но структура должна быть такая же как в исходных таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 18:52 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL За мелкие ошибки заранее извиняюсь, пишу с пляжа. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 19:47 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Насколько я вижу всю ситуацию, то эта таблица является всего лишь продуктом какого-то отчёта перед выводом на печать. И я совершенно не понимаю, зачем делать ДРУГОЙ ОТЧЁТ, опираясь на эту непонятную таблицу. Гораздо правильнее сделать ОТДЕЛЬНЫЙ отчёт без использования этой таблицы, а на основании ИСХОДНЫХ данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 21:46 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL возможно не поняли ее роли в моем запросе Уникальность не обязательно достигается через distinct, а pivot в данном случае это всего лишь удобная синтаксическая обёртка для Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 09:03 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Выкладываю все, так как, действительно, непонятно получается. Сам запрос: Код: plsql 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.
И во вложении табличка с результатом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 09:19 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, Для начала определитесь, что задаёт гранулярность отчёта, т.е. объединяет все строки одного пользователя. Как только определитесь, задача становится решаемой. Как один из вариантов - растянуть название департамента внутри гранулы оконной функцией Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 09:43 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
env, Большое спасибо за исчерпывающий пример! Только не совсем понятно, колонка u_id какой аналог имеет в моем select-e? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 10:17 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
ak1906, А вот с этим вам и надо разобраться. Могу только предположить, что возможно это a.authid , но уверенности в этом нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 10:28 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
Еще раз большое спасибо за советы! Дальше попробую сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 10:34 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
env НеофитSQL возможно не поняли ее роли в моем запросе Уникальность не обязательно достигается через distinct, а pivot в данном случае это всего лишь удобная синтаксическая обёртка для Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Pivot компилировался и работал, а этот код не хочет: ORA-00979: not a GROUP BY expression Без вложенных селектов такое можно починить? Один Group By и так дороже чем distinct, а два тем более.. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 20:57 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL, А это потому что тут очевидная опечатка. Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 09:19 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL Один Group By и так дороже чем distinct, а два тем более.. Что, простите? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 12:39 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
PuM256 НеофитSQL Один Group By и так дороже чем distinct, а два тем более.. Что, простите? Просто не обращайте внимания. Юниор систематически подменяет понимание предмета богатой фантазией. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 15:11 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
env НеофитSQL, А это потому что тут очевидная опечатка. Код: plsql 1.
Не помогло, дает такую же ошибку в другом месте. Как правильно развернуть pivot "своими словами", если такое возможно? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 19:10 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
PuM256 НеофитSQL Один Group By и так дороже чем distinct, а два тем более.. Что, простите? Я поигрался с запросами подсчета уникальных значений в большой таблице и увидел, что для одних запросов быстрее distinct, для других - group by. Но в пределах погрешности, поэтому нет победителя. Агрегатные функции не использовались, индексы выключены. Есть длиннющая тема у Гуру Тома: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:32961403234212 Где он говорит что нет разницы, а потом сто человек ломают копья, бездоказательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 19:29 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL Я поигрался На SQL не пишут программы . На SQL декларируют требования . Ну язык такой. Декларативный. А программу (план исполнения) под требования пишет оптимизатор, вобравший в себя опыт тысяч индусов. И, будучи кодером опытным, оптимизатор способен решать одну и ту же задачу многими способами. Иногда - сотнями тысяч разных способов (не утрирую), от подходящих до крайне неудачных. Вы же сравниваете производительность требований по результатам работы конкретных имплементаций, даже не рассматривая эти самые имплементации на предмет адекватности. А затем делаете умное лицо и фонтанируете фантазией. Потому Ваши "поигрушки", как правило, вызывают бурное веселье зала и довольно редко - желание вступать в профессиональное обсуждение. Надеюсь на понимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 22:09 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
andrey_anonymous, Когда гуру Том говорит, что в Оракле нет разницы в скорости, я ему доверяю - у него опыт. Кроме того, у него есть позиция по этому вопросу Ответы содержащие "не все так однозначно" позицией не являются, к знаниям не добавляют. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 22:38 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL Когда гуру Том говорит, что в Оракле нет разницы в скорости, я ему доверяю - у него опыт. 1. "гуру" покинул Oracle пару-тройку лет как. Я его даже в списках Oak Table не нашел (зато нашел нашего Тимура :) ). Так что, несмотря на гигантский объем поделанной за десятилетия работы в области популяризации oracle rdbms, оставленный им массив знаний потихонечку начинает стареть. От Тома еще можно книжки почитать, раз уж документация упорно "не заходит". Но вообще лучше уже других кумиров поискать - Джонатан Льюис, Аруп Нанда, Стив Ферштейн, Танел Подер, Кэрри Миллсап - да много их. Некоторые блоги ведут, некоторые книжки пишут. Из местных (действующих) не игнорьте Elic, xtender, Timur Akhmadeev... да тоже есть еще пока кого послушать. 2. "гуру" свое мнение базирует на глубоком знании предмета, а не на отсылках к авторитетам. Знание предмета "гуру" добывал лично посредством хорошо поставленных и легко воспроизводимых экспериментов. Именно к этому и пытаюсь Вас сподвигнуть. Если хотите не слыть балаболом - подтверждайте свои фантазии тестовыми сценариями а-ля Том, это помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 22:54 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
andrey_anonymous, гуру Том замечателен тем, что он доступен. Ему вопрос написал, получил ответ. От "кумиров" которые уподобились тибетским монахам польза очень специфичная. Они секреты Оракла хранят от непосвященных :) В чем, кстати, и отличается наука от ремесла: в науке ценится прогресс, а в ремесле - секреты. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 02:48 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL гуру Том замечателен тем, что он доступен. Ему вопрос написал, получил ответ. Жаль Вас расстраивать, но ответил не Том. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 03:24 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL andrey_anonymous, гуру Том замечателен тем, что он доступен. Ему вопрос написал, получил ответ. Он зарплату за это получал. В этом, в ответах на вопросы, состояла его работа . НеофитSQL От "кумиров" которые уподобились тибетским монахам польза очень специфичная. Они секреты Оракла хранят от непосвященных :) Спички детям не игрушка, и прячут их от детей вовсе не тибетские монахи. НеофитSQL В чем, кстати, и отличается наука от ремесла: в науке ценится прогресс, а в ремесле - секреты. Ох. Прогресс, это когда ты за яйками, вместо того, чтобы пройти в собственный курятник, топаешь в ближайший круглосуточный супермаркет. А ремесло, это не про секреты в первую очередь, а про демонстрацию шедевров (masterpieces). Так, в Нюрнберге, золотых дел мастера должны были представить серебряный кубок колумбины. И, на основе представленного, комиссия решала, достоин ли претендент приёма в ремесленники, путём присвоения ему звания мастера. Между прочим, такого рода разумная традиция для всех ремесленных профессий, сорта столяра или плотника, сохранена в Германии до сих пор. Всякий столяр до сих пор должен представить свой шедевр, чтобы бумажку получить о том, что он столяр. В программировании, вообще говоря нет ничего даже близко похожего. В частности потому, что ему, как первой или главной профессии, нигде не учат. Т.е. программисты, это по сути, скопище самозванцев. У таких людей вообще какие могут быть секреты... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 03:34 |
|
Вопрос по сортировке в таблице
|
|||
---|---|---|---|
#18+
НеофитSQL Как правильно развернуть pivot "своими словами", Код: plsql 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.
Ещё раз, pivot - это просто удобная синтаксическая обёртка. Если понимать, что он делает, то не так уж сложно переписать эту конструкцию более "стандартными" элементами языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 09:26 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1880720]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
133ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 244ms |
0 / 0 |