MazoHist ваш вариант дает результат еквивалентный
order by code, typeshop, count desc, p1, p2, shop
в итоге сначала идет группа 18-47-55-58 и за ней 7-9-17. А надо по возврастанию.
и я немного опечатался(, часный случай в таблицах показал, но в sql не частный случай...
перепостЕсть исходня таблица
CODE SHOP TYPESHOP COUNT P1 P2 PRICE
1 4 t1 14 4 10 453,2
1 26 t1 14 4 10 716,83
1 683 t2 14 4 10 264,07
1 50 t2 10 1 9 1163,79
1 51 t2 10 1 9 1025,19
1 58 t2 10 0 10 3289,08
1 18 t2 10 0 10 3811,91
1 47 t2 10 0 10 5220,86
1 55 t2 10 0 10 6064,07
1 7 t2 10 1 9 1004,96
1 71 t2 8 0 8 4161,82
1 2 t2 8 0 8 3346,88
1 36 t3 2 0 2 5415,11
2...
Надо отсортировать следующим образом: по Code и TYPESHOP, а внутри каждого TYPESHOPE по Shop asc и Count desc, но так чтобы shop'ы с совпадающими count+p1+p2 шли друг за другом. По сути order by code, typeshop, count desc, p1, p2, shop, Но тут всплыло еше одно важное условие( нужно чтобы группы shop'ов внутри TYPESHOP cостоящие из строк с одинаковыми count+p1+p2, шли тоже в порядке возврастания.
искомый результат
CODE SHOP TYPESHOP COUNT P1 P2 PRICE
1 4 t1 14 4 10 453,2
1 26 t1 14 4 10 716,83
1 683 t2 14 4 10 264,07
1 7 t2 10 1 9 1004,96
1 50 t2 10 1 9 1163,79
1 51 t2 10 1 9 1025,19
1 18 t2 10 0 10 3811,91
1 47 t2 10 0 10 5220,86
1 55 t2 10 0 10 6064,07
1 58 t2 10 0 10 3289,08
1 2 t2 8 0 8 3346,88
1 71 t2 8 0 8 4161,82
1 36 t3 2 0 2 5415,11
здесь видно, что в данном случае в группе t2 есть 4 подгруппы 683, 7-50-51, 18-47-55-58, 2 и есть верхний уровень сортировки по полю Count и дальше уже в ней группы с одинаковым Count (7-50-51, 18-47-55-58) тоже идут возврастанию.
sql
select * from(select 1 CODE, 4 SHOP, 't1' TYPESHOP, 14 COUNT, 4 P1, 10 P2, 453.2 PRICE from dual union all
select 1, 26, 't1', 14, 4, 10, 716.83 from dual union all
select 1, 683, 't2', 14, 4, 10, 264.07 from dual union all
select 1, 50, 't2', 10, 1, 9, 1163.79 from dual union all
select 1, 51, 't2', 10, 1, 9, 1025.19 from dual union all
select 1, 58, 't2', 10, 0, 10, 3289.08 from dual union all
select 1, 18, 't2', 10, 0, 10, 3811.91 from dual union all
select 1, 47, 't2', 10, 0, 10, 5220.86 from dual union all
select 1, 55, 't2', 10, 0, 10, 6064.07 from dual union all
select 1, 7, 't2', 10, 1, 9, 1004.96 from dual union all
select 1, 71, 't2', 8, 0, 8, 4161.82 from dual union all
select 1, 2, 't2', 8, 0, 8, 3346.88 from dual union all
select 1, 36, 't3', 2, 0, 2, 5415.11 from dual) tmp