Форум: "Базы";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизЗапрос в Оракле Найти похожие ветки
← →
Дмитрий_Б © (2006-03-01 15:21) [0]Здравствуйте. Помогите пож-та правильно составить запрос. Есть запрос, возвращающий такой рез-т:
Field_1 Field_2
NNN 1
NNN 2
SSS 3
SSS 4
SSS 5
CCC 6
CCC 7
PPP 8
CCC NULL
SSS NULL
NNN NULL
Далее рез-т запроса необходимо привести к такому виду:
Field_1 Field_2
NNN 1
NNN 2
NNN NULL
SSS 3
SSS 4
SSS 5
SSS NULL
CCC 6
CCC 7
CCC NULL
PPP 8
Заранее спасибо.
← →
vovnuke © (2006-03-01 15:31) [1]select Field_1, Field_2
from Table
group by Field_2, Field_1
Но это если значение Field_2, не повторяется.
← →
vovnuke © (2006-03-01 15:37) [2]извиняюсь, гоню
← →
DenK_vrtz © (2006-03-01 15:45) [3]Если Field_1 сортируется не по алфавиту, то получается, что на Field_1 наложен некий статус старшинства, поэтому без ввода нового значения для упорядочивания, я думаю, не обойтись.
Идея примерно такова.
SELECT c, i FROM
(
SELECT "NNN" c, 1 i, 1 n FROM DUAL
UNION ALL
SELECT "NNN" c, 2 i, 1 n FROM DUAL
UNION ALL
SELECT "SSS" c, 3 i, 2 n FROM DUAL
UNION ALL
SELECT "SSS" c, 4 i, 2 n FROM DUAL
UNION ALL
SELECT "SSS" c, 5 i, 2 n FROM DUAL
UNION ALL
SELECT "CCC" c, 6 i, 3 n FROM DUAL
UNION ALL
SELECT "CCC" c, 7 i, 3 n FROM DUAL
UNION ALL
SELECT "PPP" c, 8 i, 4 n FROM DUAL
UNION ALL
SELECT "CCC" c, to_number(null) i, 3 n FROM DUAL
UNION ALL
SELECT "SSS" c, to_number(null) i, 2 n FROM DUAL
UNION ALL
SELECT "NNN" c, to_number(null) i, 1 n FROM DUAL
)
ORDER BY n,i
при условии, что не будет комбинации
NNN 9
← →
Дмитрий_Б © (2006-03-01 15:52) [4]У меня появилась пара мыслей, но все предложения принимаются :)
← →
Sergey13 © (2006-03-01 15:59) [5]Я что то не въезжаю. А Order by 1,2 применить к исходному запросу не проканает что-ли?
← →
Reindeer Moss Eater © (2006-03-01 16:10) [6]select * from table
order by decode(Field1,NNN,1,SSS,2,CCC,3,PPP,4,5),Field2
← →
Reindeer Moss Eater © (2006-03-01 16:14) [7]Точнее так
select * from table
order by decode(Field1,"NNN",1,"SSS",2,"CCC",3,"PPP",4,5),Field2
← →
Reindeer Moss Eater © (2006-03-01 16:17) [8]А еще точнее так
select * from table
order by Field2,decode(Field1,"NNN",1,"SSS",2,"CCC",3,"PPP",4,5)
← →
Дмитрий_Б © (2006-03-01 16:18) [9]Да, но я не знаю, какие конкретно значения могут быть вместо NNN, SSS...
← →
Desdechado © (2006-03-01 16:18) [10]Sergey13 © (01.03.06 15:59) [5]
просто в одних СУБД NULL больше всего, в других - меньше всего
поэтому сортировать его однозначно не получится
← →
Reindeer Moss Eater © (2006-03-01 16:19) [11]Нет все же [7]
← →
Reindeer Moss Eater © (2006-03-01 16:20) [12]Да, но я не знаю, какие конкретно значения могут быть вместо NNN, SSS...
<Цитата>
Нам дан конкретный набор и спрошено как его привести к другому конкретному набору.
← →
Дмитрий_Б © (2006-03-01 16:24) [13]А, ну да :) спасибо.
← →
Sergey13 © (2006-03-01 16:24) [14]2[10] Desdechado © (01.03.06 16:18)
Да нет. Тут вопрос в первом поле и в неправильности его сортировки. Я просто сразу не въехал.
2 [9] Дмитрий_Б © (01.03.06 16:18)
>Да, но я не знаю, какие конкретно значения могут быть вместо NNN, SSS...
А откуда тогда приоритет?
← →
Дмитрий_Б © (2006-03-01 16:49) [15]Всем спасибо за участие, решение найдено.
← →
vovnuke © (2006-03-01 16:53) [16]продемонстрируй, если не сложно
← →
Дмитрий_Б © (2006-03-01 18:01) [17]Функцию написал, возвращающую старшинство (приоритет) поля Field_1.
А в запросе потом делаю order by myfunc(value). Ничего нетривиального.
← →
evvcom © (2006-03-02 09:34) [18]
> просто в одних СУБД NULL больше всего, в других - меньше
> всего
> поэтому сортировать его однозначно не получится
Для Оракла ORDER BY Field NULLS LAST (или FIRST)
← →
GreenF (2006-03-02 17:52) [19]select t1.field_1,
t1.field_2
from my_table t1,
(select t2.field_1, max(t2.field_2) + 0.1 as m_field_2
from my_table t2
group by t2.field_1 ) t3
where t1.field_1 = t3.field_1
order by nvl(t1.field_2, t3.m_field_2)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c