Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
vizalis
Member

Откуда:
Сообщений: 75
Пишу запрос, для такой табл

d1************d2*********id
02.03.2008 03.03.2008 6
02.03.2008 16.03.2008 7
28.04.2008 ---------------- 1
01.02.2008 05.02.2008 2
02.03.2008 15.03.2008 3
02.03.2008 10.03.2008 4
10.03.2008 ---------------- 5
05.05.2008 05.05.2008 8
06.06.2008 06.06.2008 9
сортирую

SELECT id,(d2-d1) p,nvl(to_date(substr(d1,1,10),'dd.mm.yyyy'),to_date(substr(d2,1,10),'dd.mm.yyyy')) r,d2
FROM rdate
order by r,p
id***d1-d2*****d1*************d2
2|-----|4|------|01.02.0008|-----| 05.02.2008
6|-----|1|------|02.03.0008|-----| 03.03.2008
4|-----|8|------|02.03.0008|-----| 10.03.2008
3|-----|13|-----|02.03.0008|-----| 15.03.2008
7|-----|14|-----|02.03.0008|-----| 16.03.2008
5|-----|--|-----|10.03.0008|-----| 10.03.2008
1|-----|--|-----|28.04.0008|-----|
8|-----|0|------|05.05.0008|-----| 05.05.2008
9|-----|0|------|06.06.0008|-----| 06.06.2008

Но не знаю как написать что если d1=d2 то берем только одно значение! и вставляемем его для сортировки в d1 ???
2 апр 08, 13:42    [5492088]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
не уверен, что понял чего надо.. Это?
SELECT id,(d2-d1) p,nvl(to_date(substr(d1,1,10),'dd.mm.yyyy'),to_date(substr(d2,1,10),'dd.mm.yyyy')) r
,decode(d2,d1,null,d2) as d2
FROM rdate
order by r,p
2 апр 08, 13:48    [5492134]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
vizalis
Member

Откуда:
Сообщений: 75
не совсем поняла да последнии записи он вставил в d1 а почему-то перед ними тоже совподали, смычл в том что это периоды с d1 по d2 и надо их отсортировать,но там где d1=d2 надо брать только одно значение, сортировка происходит по первому числу периода!????что я не так пишу?
2 апр 08, 13:57    [5492197]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
vizalis
не совсем поняла да последнии записи он вставил в d1 а почему-то перед ними тоже совподали, смычл в том что это периоды с d1 по d2 и надо их отсортировать,но там где d1=d2 надо брать только одно значение, сортировка происходит по первому числу периода!????что я не так пишу?

сумбурно изъясняетесь.
Возможно, ваши даты отличаются часами-секундами. Соответственно, такие d1<>d2, но
когда их выводите в формате до дня - этого отличия просто не видно.
2 апр 08, 14:10    [5492289]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
На фига столько тем-то создавать?
2 апр 08, 14:12    [5492307]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Поясните плиз на Вашем результате.
Что не так ? Что бы Вы хотели увидеть по другому ?
2 апр 08, 14:13    [5492311]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
vizalis
Member

Откуда:
Сообщений: 75
надо чтобы получилось так я уже замучилась объясните пожалуйста

так выглядит после сортировки
id------d1-d2---------d1-------------------d2
2-------4---------01.02.0008----------05.02.2008
6-------1---------02.03.0008----------03.03.2008
4-------8---------02.03.0008----------10.03.2008
3------13---------02.03.0008----------15.03.2008
7------14---------02.03.0008----------16.03.2008
5------***--------10.03.0008---------10.03.2008
1------***--------28.04.0008----------*******
8------0----------05.05.0008----------05.05.2008
9------0 ---------06.06.0008----------06.06.2008
т е отсортировано по датам(начальным у каждого периода) и по периодам если период начинается с одной даты то по длине периода сортируется
а так должно
id------d1-d2---------d1-------------------d2
2-------4---------01.02.0008----------05.02.2008
6-------1---------02.03.0008----------03.03.2008
4-------8---------02.03.0008----------10.03.2008
3------13---------02.03.0008----------15.03.2008
7------14---------02.03.0008----------16.03.2008
5------***--------10.03.0008---------*********
1------***--------28.04.0008----------*******
8------0----------05.05.0008----------********
9------0 ---------06.06.0008----------********
2 апр 08, 14:19    [5492341]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
vizalis
Member

Откуда:
Сообщений: 75
одиночная дата может в любои месте после сортировки быть, и еще вопрос почему у меня выводит год 0008 - вместо 2008

id------d1-d2---------d1-------------------d2
10-----***-------01.01.0008----------
2-------4---------01.02.0008----------05.02.2008
6-------1---------02.03.0008----------03.03.2008
4-------8---------02.03.0008----------10.03.2008
3------13---------02.03.0008----------15.03.2008
7------14---------02.03.0008----------16.03.2008
5------***--------10.03.0008---------*********
1------***--------28.04.0008----------*******
8------0----------05.05.0008----------********
9------0 ---------06.06.0008----------********
2 апр 08, 14:24    [5492377]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
vizalis
надо чтобы получилось так я уже замучилась объясните пожалуйста
Ещё бы не замучаться, столько тем, и ни в одной так толком и не сформулировать, что надо...

Чем Вам просто order by d1, d2 не подходит?

ЗЫ: На всякий случай, Вы в курсе, что поля для сортировки совсем не обязательно формировать в кляузе select? :)

vizalis
и еще вопрос почему у меня выводит год 0008 - вместо 2008
Потому что у Вас поля типа date, я так полагаю :)
2 апр 08, 14:29    [5492407]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
А как Вам решение orawish ? Не понравилось ? :-)
2 апр 08, 14:29    [5492411]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
vizalis
Member

Откуда:
Сообщений: 75
чуть выше я написала что хочу увидеть а его решение не совсем то
2 апр 08, 14:34    [5492461]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
vizalis
чуть выше я написала что хочу увидеть а его решение не совсем то


Девушка, давайте-ка вы

1) Научитесь пользоваться тегами SRC
2) Приведете пример вашей таблицы в виде скрипта создания CREATE TABLE ...
3) Приведете пример (ограниченый) ваших тестовых данных в виде INSERT INTO ...
4) Приведете пример запроса, который вы выполняете.
5) Внятно сформулируете, что вам не нравится в вашем результате и что вы хотите получить.

Пока что все, что вы написали, свидетельствует о наличии у вас интеллекта классической
блондинки из анекдотов, а не разработчика. Без обид.

"Кто ясно мыслит - тот ясно излагает" (c)
2 апр 08, 14:40    [5492514]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
Feierabend In Fuenf Minuten
Guest
SELECT   ID, (d2 - d1) p,
         NVL (d1,
              d2
             ) r,
         decode(nvl(sign(d1-d2),0),0,'----------',d2)
    FROM rdate;

        ID          P R        Ach was   
---------- ---------- -------- ----------
         6          1 02.03.08 03.03.08  
         7         14 02.03.08 16.03.08  
         6          0 03.03.08 ----------
         6            28.04.08 ----------
ORDER BY r, p
2 апр 08, 16:34    [5493486]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
vizalis
Member

Откуда:
Сообщений: 75
спасибо вот это я хотела получить,простите что неясно объясняю это моя проблема

SELECT ID, nvl(d1,d2),
decode(nvl(sign(d1-d2),0),0,' ',d2) rez2,abs(d1-d2) per
FROM rdate
order by nvl(d1,d2),decode(nvl(sign(d1-d2),0),0,' ',d2);

id*********rez1*********rez2**********per
10^^^^ 01.01.2005^^^^^ ------- ^^^^^^
10^^^^ 01.01.2008^^^^^ -------^^^^^^^
2^^^^^ 01.02.2008^^^^^05.02.08 ^^^^^^4
6^^^^^ 02.03.2008^^^^^03.03.08 ^^^^^^1
4^^^^^ 02.03.2008^^^^^10.03.08 ^^^^^^8
3^^^^^ 02.03.2008^^^^^15.03.08 ^^^^^^13
7^^^^^ 02.03.2008^^^^^16.03.08 ^^^^^14
11^^^^ 03.03.2008^^^^^ ---------^^^^^ 0
12^^^^ 05.03.2008^^^^^---------- ^^^^^
11^^^^ 06.03.2008^^^^^03.03.08 ^^^^^^3
5^^^^^ 10.03.2008^^^^^ ---------^^^^^
1^^^^^ 28.04.2008^^^^^ ---------^^^^^
8^^^^^ 05.05.2008^^^^^--------- ^^^^^0
3 апр 08, 06:15    [5495746]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в запросе!знаю что уже писала,неправильно задала вопрос!  [new]
Elic
Member

Откуда:
Сообщений: 29977
vizalis
decode(nvl(sign(d1-d2),0),0,' ',d2)
Нередкая ошибка начинающих :) RTFM Decode result datatype (FAQ)
Правильно:
case when d2 <> d1 then d2 end
decode(abs(sign(d2 - d1)), 1, d2)
3 апр 08, 09:43    [5496114]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить