Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Запрос в Оракле   Найти похожие ветки 

 
Дмитрий_Б ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.063 c
15-1144126390
Ega23
2006-04-04 08:53
2006.04.23
С Днём рождения! 4 апреля


3-1141100337
Vladimir M
2006-02-28 07:18
2006.04.23
Как передать массив данных в параметр SQL запроса


15-1144160567
Volf_555
2006-04-04 18:22
2006.04.23
Как подлкючить человека? Живёт от меня на расстоянии ~130 м


15-1143812834
WondeRu
2006-03-31 17:47
2006.04.23
Есть варианты перевода "Uhn Tiss Uhn Tiss Uhn Tiss"?


15-1144042656
Ega23
2006-04-03 09:37
2006.04.23
С Днём рождения! 3 апреля