Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Как использовать Group by в многотабличных запросах : Oracle

23.04.2024 22:14


01.12.2006 19:08
omorozov
 
Сделал запрос

SELECT a.clientindex, SUM(a.totalsum)
FROM smdocuments@dbrespc a,
where a.doctype='WI' and a.opcode!=3
And createdat>=TO_DATE('01.09.2006','dd.mm.yyyy')
Group by clientindex


но если пытаюсь добавить в запрос поля еще из одной таблицы, например
SMClientInfo@dbrespc b - ругается что выражение не Group by

Как такие задачи решать в Оракле?
И еще: Group by 1 почему то тоже выдает ошибку.
01.12.2006 20:59
OlegON
 
может сначала опишешь, что же ты хочешь?
02.12.2006 13:07
slava
 
Цитата:
omorozov And createdat>=to_date(TO_DATE('01.09.2006','dd.mm.yyyy'))
TO_DATE 2 раза для надежности?
02.12.2006 13:35
Mtirt
 
А smdocuments@dbrespc это еще и к удаленной базе по DBlink-у?

Может имеет смысл хоть SMClientInfo локальный брать?
03.12.2006 10:28
akonev
 
Цитата:
omorozov но если пытаюсь добавить в запрос поля еще из одной таблицы, например
SMClientInfo@dbrespc b - ругается что выражение не Group by
Логика примерно такая: если поле указано в "group by", то для каждой строки
понятно что писать в эти поля - они уникальны для каждой строки.

если в "group by" поля нет, но по нему прописана агрегатная функция (SUM, MAX, MIN....),
то опять понятно - что функция вернет.

а если не то и не другое - тогда непонятно, что возвращать, если возможных значений
больше чем одно. вот про это оно и ругается.

То есть добавляя поле или загони его в "group by" или укажи для него функцию. я обычно пишу MAX(поле) .
Может матерые ораклисты подскажут более правильный путь, но этот - работает *04
04.12.2006 10:53
omorozov
 
Цитата:
olegon может сначала опишешь, что же ты хочешь?
Хотелось в выборке сумм накладных по поставщикам увидеть не их коды,
а названия, вот и хотел связать в одном запросе Название из таблицы контрагентов
04.12.2006 10:55
omorozov
 
Цитата:
Mtirt А smdocuments@dbrespc это еще и к удаленной базе по DBlink-у?

Может имеет смысл хоть SMClientInfo локальный брать?
Запрос локальный, просто использовал предыдущий запрос, в котором были линки
04.12.2006 11:10
omorozov
 
Цитата:
Andrew_Konev
Цитата:
omorozov но если пытаюсь добавить в запрос поля еще из одной таблицы, например
SMClientInfo@dbrespc b - ругается что выражение не Group by
Логика примерно такая: если поле указано в "group by", то для каждой строки
понятно что писать в эти поля - они уникальны для каждой строки.

если в "group by" поля нет, но по нему прописана агрегатная функция (SUM, MAX, MIN....),
то опять понятно - что функция вернет.

а если не то и не другое - тогда непонятно, что возвращать, если возможных значений
больше чем одно. вот про это оно и ругается.

То есть добавляя поле или загони его в "group by" или укажи для него функцию. я обычно пишу MAX(поле) .
Может матерые ораклисты подскажут более правильный путь, но этот - работает *04
Спасибо, сработало
Часовой пояс GMT +3, время: 22:14.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.