[closed]
покажи результаты
Пример: select * from tab1 order by col1, col2
a 1
b 1
c 1
c 2
c 3
d 2
d 7
Воткнул.
Вопрос закрыт.
Вот объясните мне, как можно ожидать другого результата? Типа данные будут отсортированны и по первой и по второй колонке одновременно? Ежу понятно, что это невозможно. Вот я тут уже все мозги протёр, но никак не могу понять, чего ожидал автор треда от сортировки.
давайте конкрус утсроим: кто первый догадается что он хотел
первая догадка: он сам не знал
a 1
b 1
c 1
c 2
c 2
d 3
d 7
во вложенных же подзапросах нельзя order by юзать...
Сделать-то наверное можно (мускуль не знаю в мсскл и оракле - легко. Вопрос - а нах?
легкону расскажи как, чтот я туплю...
Да-да, мне тоже интересно, как средствами SQL (не PL\SQL с курсорами, например) сформировать запрос, чтобы в ответе была таблица, в которой оба столбца были отсортированы независимо
Для связанных данных это не имеет смысла, а несвязанные проще достать двумя запросами.
Тем не менее, смысла в подобных результатах я не вижу
при наличии некоего третьего столбца и отчета в виде сводной таблицы (перекрестный запрос где по строкам и столбцам идут эти col1 и col2, а col3 - некая анализируемая величина, при условии что стори и столбцы в отчете отсортированиы получим,
что такой запрос вернет имена строк и столбцов "диагонали отчета".
если долбанутый заказчик захочет выделить эту "диагональ" цветом, то при форматировании такого отчета скажем в excel такой запрос может быть использован. Но лучше этого не делать, а если делать, то по-другому.
во вложенных же подзапросах нельзя order by юзать...Можно всё. А потом по ROWNUM соединить.
сделать два подзапроса и сджойнить по row_numberну-ну
во-первых я просил бзе использования order by в подзапросах, ты видимо предлагаешь с ним
во-вторых 4 вложенных запроса это кошмар
2 - даже если 4 - ну и хрен с ним, поставлена тупая задача - выдано тупое решение. Требований к производительности и тд не ставилось. Только не говори, что подобный метод выдаст неверный результат
3 - В чистом виде ORDER BY в подзапросах действительно нельзя использовать, по крайней мере в MSSQL, но можно сделать "TOP совсеммного" - тут ORDER BY замечательно отработает, но так, как я предложил - ROW_NUMBER (ORDER BY ...) - тоже отработает на ура - замечу, тут сортировки вообще нет(! т.е. можно сортировать по другим полям если надо /* MSSQL 2005 */, как в оракле точно не скажу - больше 2 лет под него не писал ничего, но думаю, что если также нельзя использовать сортировку в подзапросах, условие типа "WHERE ROWNUM < совсеммного" тоже замечательно отработает // если ошибся в названии счетчика - прошу прощения, не помню точно
Дим, в твоем примере данные не связаны друг с другом - у автора они в одной строке идут
что первые 2 поля являются своего рода составным ключом к третьему полю, которое надо как-нибудь агрегировать и выложить на простыню NxM и анализировать с использованием мерзкого заказчика, придумавшего какой-то изврат, и Excel.
Оставить комментарий
dseleznev
[closed]