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

Откуда:
Сообщений: 17
Привет всем!!!
Вот такая у меня проблема:

SELECT
SUM(AGGREGAT.OCTETS)
FROM
((((AGGREGAT INNER JOIN ROUTE USING (ID_ROUTE)) INNER JOIN NETWORK ON ROUTE.SRC_NET = NETWORK.ID_NET) INNER JOIN ORGANIZATION ON NETWORK.ORG = ORGANIZATION.ID_ORG AND ORGANIZATION.ID_PRNT_ORG = (SELECT
ORGANIZATION.ID_ORG
FROM
ORGANIZATION
WHERE
ORGANIZATION.NAME_ORG = :src)) INNER JOIN NETWORK net ON ROUTE.DST_NET = net.ID_NET) INNER JOIN ORGANIZATION org ON net.ORG = org.ID_ORG AND org.NAME_ORG = :dst
WHERE
AGGREGAT.STAMP >= :start_time AND AGGREGAT.STAMP <= :end_time

group by extract( :r_q from AGGREGAT.STAMP)

Ругается вот так:
Error(s) parsing SQL: Unexpected token at 586 near from AGGREGAT.STAMP).
24 май 07, 17:41    [4181698]     Ответить | Цитировать Сообщить модератору
 Re: Бинд не проходит  [new]
SRC oracle
Guest
SELECT
SUM(AGGREGAT.OCTETS)
FROM
((((AGGREGAT INNER JOIN ROUTE USING (ID_ROUTE)) INNER JOIN NETWORK ON ROUTE.SRC_NET = NETWORK.ID_NET) INNER JOIN ORGANIZATION ON NETWORK.ORG = ORGANIZATION.ID_ORG AND ORGANIZATION.ID_PRNT_ORG = (SELECT
ORGANIZATION.ID_ORG
FROM
ORGANIZATION
WHERE
ORGANIZATION.NAME_ORG = :src)) INNER JOIN NETWORK net ON ROUTE.DST_NET = net.ID_NET) INNER JOIN ORGANIZATION org ON net.ORG = org.ID_ORG AND org.NAME_ORG = :dst
WHERE
AGGREGAT.STAMP >= :start_time AND AGGREGAT.STAMP <= :end_time
24 май 07, 17:44    [4181714]     Ответить | Цитировать Сообщить модератору
 Re: Бинд не проходит  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
Читай синтаксис EXTRACT. Он после скобки требует указания ключевого слова, а не переменной, литерала или выражения.

Например

EXTRACT(MINUTE FROM <expression>)
.
24 май 07, 17:53    [4181776]     Ответить | Цитировать Сообщить модератору
 Re: Бинд не проходит  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
Скорее всего для выбора уровня детализации свёртки тебе подойдёт to_char. Или используй динамический SQL.
24 май 07, 17:55    [4181799]     Ответить | Цитировать Сообщить модератору
 Re: Бинд не проходит  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10040
Try something like:

group by case upper(:r_q)
           when 'MINUTE'
             then extract(MINUTE from AGGREGAT.STAMP)
           when 'SECOND'
             then extract(SECOND from AGGREGAT.STAMP)
           .
           .
           .
         end

SY.
24 май 07, 18:13    [4181886]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить