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

Откуда: Абхазия, Сухум
Сообщений: 314
Добрый день!
Не могу понять, где закралась ошибка:

SELECT
	  c.SERV_NAME AS SERV_NAME,
 	  (c.CC + i.IC) AS SUM_CLNT_ID,
 	  (c.CSM + i.ISM) AS SUMM
FROM
 
(
SELECT
      ser.SERV_NAME AS SERV_NAME,
      COUNT(chg.CLNT_ID) AS CC,
      SUM(chg.SUMM_$) AS CSM
FROM
    CHARGE chg,
    SERVICE ser
WHERE
     chg.SERV_ID = -5
     AND chg.SERV_ID = ser.SERV_ID
     AND chg.CHARGE_DATE >= :DATE1
     AND chg.CHARGE_DATE < :DATE2 + 1 - 1 / 86400
     AND chg.DEL_DATE IS NULL
GROUP BY SERV_NAME) c
	 
UNION

(SELECT
      ser.SERV_NAME AS SRV_NAME,
      COUNT(invo.CLNT_ID) AS IC,
      SUM(invo.SUMM_$) AS ISM
FROM
    INVOICE_DETAIL inv,
    INVOICE invo,
    SERVICE ser
WHERE
     inv.SERV_ID = -5
     AND inv.INV_ID = invo.INV_ID
     AND inv.SERV_ID = ser.SERV_ID
     AND invo.INV_DATE >= :DATE1
     AND invo.INV_DATE < :DATE2 + 1 - 1 / 86400
     AND invo.DEL_DATE IS NULL
GROUP BY SRV_NAME) i
ORDER BY c.SERV_NAME

Выдаёт ошибку:
"ORA-00933: SQL command not properly ended"
26 апр 07, 15:54    [4074908]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
Останавливается на этом:

GROUP BY SRV_NAME) [color=red][b]i[/b][/color]
26 апр 07, 15:55    [4074916]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Слишком рано псевдоним решили использовать.
Сравните

SQL> 
SQL> select empno en, count(*)
  2  from scott.emp
  3  group by en
  4  /

select empno en, count(*)
from scott.emp
group by en

ORA-00904: "EN": ungültiger Bezeichner

SQL> 
26 апр 07, 15:59    [4074944]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
А если задаю так:

SELECT
	  t.SERV_NAME AS SERV_NAME,
  	  (t.CC + t.IC) AS SUM_CLNT_ID,
  	  (t.CSM + t.ISM) AS SUMM

FROM

(SELECT
      ser.SERV_NAME AS SERV_NAME,
      COUNT(chg.CLNT_ID) AS CC,
      SUM(chg.SUMM_$) AS CSM
FROM
    CHARGE chg,
    SERVICE ser
WHERE
     chg.SERV_ID = -5
     AND chg.SERV_ID = ser.SERV_ID
     AND chg.CHARGE_DATE >= :DATE1
     AND chg.CHARGE_DATE < :DATE2 + 1 - 1 / 86400
     AND chg.DEL_DATE IS NULL
GROUP BY ser.SERV_NAME
	 
UNION ALL

SELECT
      ser.SERV_NAME AS SERV_NAME,
      COUNT(invo.CLNT_ID) AS IC,
      SUM(invo.SUMM_$) AS ISM
FROM
    INVOICE_DETAIL inv,
    INVOICE invo,
    SERVICE ser
WHERE
     inv.SERV_ID = -5
     AND inv.INV_ID = invo.INV_ID
     AND inv.SERV_ID = ser.SERV_ID
     AND invo.INV_DATE >= :DATE1
     AND invo.INV_DATE < :DATE2 + 1 - 1 / 86400
     AND invo.DEL_DATE IS NULL
GROUP BY ser.SERV_NAME) t

пишет: "ORA-00904: "T"."ISM": invalid identifier"
26 апр 07, 16:16    [4075031]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Alexander Warlord
А если задаю так:

SELECT
	  t.SERV_NAME AS SERV_NAME,
  	  (t.CC + t.IC) AS SUM_CLNT_ID,
  	  (t.CSM + t.ISM) AS SUMM

FROM

(SELECT
      ser.SERV_NAME AS SERV_NAME,
      COUNT(chg.CLNT_ID) AS CC,
      SUM(chg.SUMM_$) AS CSM
FROM
    CHARGE chg,
    SERVICE ser
WHERE
     chg.SERV_ID = -5
     AND chg.SERV_ID = ser.SERV_ID
     AND chg.CHARGE_DATE >= :DATE1
     AND chg.CHARGE_DATE < :DATE2 + 1 - 1 / 86400
     AND chg.DEL_DATE IS NULL
GROUP BY ser.SERV_NAME
	 
UNION ALL

SELECT
      ser.SERV_NAME AS SERV_NAME,
      COUNT(invo.CLNT_ID) AS IC,
      SUM(invo.SUMM_$) AS ISM
FROM
    INVOICE_DETAIL inv,
    INVOICE invo,
    SERVICE ser
WHERE
     inv.SERV_ID = -5
     AND inv.INV_ID = invo.INV_ID
     AND inv.SERV_ID = ser.SERV_ID
     AND invo.INV_DATE >= :DATE1
     AND invo.INV_DATE < :DATE2 + 1 - 1 / 86400
     AND invo.DEL_DATE IS NULL
GROUP BY ser.SERV_NAME) t

пишет: "ORA-00904: "T"."ISM": invalid identifier"


Все правильно, это же UNION ALL. Он использует названия колонок из первого запроса.
T.ISM ему неизвестен. Только T.CSM
26 апр 07, 16:18    [4075047]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
dmidek
Все правильно, это же UNION ALL. Он использует названия колонок из первого запроса.
T.ISM ему неизвестен. Только T.CSM

А каково решение загадки?.. ;)
26 апр 07, 16:20    [4075055]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
Alexander Warlord
dmidek
Все правильно, это же UNION ALL. Он использует названия колонок из первого запроса.
T.ISM ему неизвестен. Только T.CSM

А каково решение загадки?.. ;)

Сорри, попробуйте сами.
Решение шарады удивительно легко.
26 апр 07, 16:23    [4075073]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
craftyman
Member

Откуда:
Сообщений: 169
SUM (t.CSM) ?
26 апр 07, 16:24    [4075078]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Alexander Warlord
dmidek
Все правильно, это же UNION ALL. Он использует названия колонок из первого запроса.
T.ISM ему неизвестен. Только T.CSM

А каково решение загадки?.. ;)
SUM(t.CSM) AS SUMM
26 апр 07, 16:25    [4075087]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116100
2craftyman & Jannny (бросая шапку об пол) :
Ну что скроешь в этой компании ? Эх ....

P.S. Да я и сам такой :-)
26 апр 07, 16:29    [4075107]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
Alexander Warlord
Member

Откуда: Абхазия, Сухум
Сообщений: 314
:) ведь делал же когда-то подобный запрос. И совсем забыл, что куда надо.
Спасибо, друзья!
26 апр 07, 16:30    [4075113]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
dmidek
2craftyman & Jannny (бросая шапку об пол) :
Ну что скроешь в этой компании ? Эх ....
Ну сорри, сорри, поздно увидела :)
26 апр 07, 16:39    [4075171]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить