Консультация № 164612
10.04.2009, 18:26
0.00 руб.
0 3 0
Доброго вечера, господа.
Субд ORACLE
Пишу запрос, вычисляющий сумму не важно чего, группируя другие поля:

select
to_date(substr(j.szinsert,1,8),'yyyymmdd'),
j.nazvanie,
j.nazvanie2,
nvl((select nomerprihoda from t1 where te=j.te and szinsert=j.szinsert),'-') prih,
nvl(j.rashod,'-') rash,
j.partiya,
j.klient,
dvizhenie,
'расход',
trunc(sum(kol))
from t1 j
where dvizhenie='-' and tipdvizheniya=2
group by
to_date(substr(j.szinsert,1,8),'yyyymmdd'),
j.nazvanie,
j.nazvanie2,
nvl((select nomerprihoda from t1 where te=j.te and szinsert=j.szinsert),'-'),
nvl(j.rashod,'-'),
j.partiya,
j.klient,
dvizhenie,
'расход'


и когда выполняю этот запрос , получаю ошибку ORA-22818: subquery expression not allowed here

Т. е. ни алиасы, ни сам подзапрос в group by подставить не получится. Как выкрутиться?

Обсуждение

Неизвестный
10.04.2009, 18:49
общий
ладно. это хрень.. не надо отвечать. ЭТо было реализовано раньше под Informix, поэтому и выбиралась сначала таблица t1/// здесь можно сделать with .... as (select )
Неизвестный
13.04.2009, 07:56
общий
да можно и типа так:
SELECT
to_date(substr(j.szinsert,1,8),'yyyymmdd'), j.nazvanie, j.nazvanie2,
T2.PRIH
……
FROM
(SELECT nvl(nomerprihoda,’-‘) AS PRIH, TE, SZINSERT FROM t1) T2, J
WHERE T2.TE=j.te and T2. SZINSERT =j.szinsert

GROUP BY
to_date(substr(j.szinsert,1,8),'yyyymmdd'),
j.nazvanie,
j.nazvanie2,
T2.PRIH
------------------
Но если честно, смущает сам запрос :)))
Неизвестный
13.04.2009, 08:43
общий
Кстати, конструкция
WITH T1 AS (SELECT * FROM TABLE1 WHERE P = D1)
работает намного дольше чем запрос после FROM... который привел я.
Форма ответа