[ОТВЕТИТЬ]
Опции темы
16.03.2007 12:05  
Mtirt
Посмотри вот это
Код:
SELECT STORELOC,
                       ARTICLE,
                       INCOMEID,
                       MAX(INCOMECLIENTINDEX) CLIENTINDEX,
                       MAX(INCOMEQ) DOCQUANTITY,
                       MAX(INCOMESUM) DOCSUM,
                       SUM(QUANTITY) QUANTITY from ffmaprep
 
16.03.2007 13:05  
dmware
1. поля storeloc нет в таблице ffmaprep (там SALELOCATIONFROM, SALELOCATIONTO)
2. max - похоже действительно то, что нужно. возвращает наиболшее значение, но поскольку содержимое полей будет совпадать у документов с одним и тем же saleid, то возвращается единственное значение.
сейчас попробую переделать запрос, спасибо!
 
16.03.2007 14:34  
deucel
поставь rectype = '1'
*04
 
16.03.2007 15:37  
dmware
а это что будет значить?
 
19.03.2007 08:11  
dmware
Помогите пожалуйста собрать все вместе. В одном из полей соответственно нужно подсчитывать остатки: ПРИХОД - РАСХОД. Делаю так:
SUM(MAX(INCOMEQ) - MAX(SALEQ)). Выдает групповая функция не является одногруппной...
Как мне получить разность между выражениями MAX(INCOMEQ) и
MAX(SALEQ) в одном запросе?

Весь запрос целиком:
SELECT
FFMapRep.ARTICLE ARTICLE,
SMCARD.NAME,
SUM(MAX(INCOMEQ) - MAX(SALEQ)),
(pr.price),
prt.NAME,
NVL(FFMapRep.Salelocationto, FFMapRep.Salelocationfrom) LOCATION,
to_date('01.03.2007', 'DD.MM.YYYY') DATE_G

FROM
FFMapRep,
SMDOCUMENTS,
SMCARD,
SMPRICES pr,
SMPRICETYPES prt

WHERE
FFMapRep.ARTICLE = SMCARD.ARTICLE
AND FFMapRep.Saletype = SMDOCUMENTS.doctype
AND FFMapRep.Saleid = SMDOCUMENTS.id
AND FFMapRep.article = SMCARD.article
AND pr.article = SMCARD.article
AND pr.pricetype = prt.id

AND (SMCARD.RECEIPTOK='1'
AND pr.STORELOC IN(1)
AND nvl(FFMapRep.Salelocationfrom, FFMapRep.Salelocationto) IN(6, 12)
AND SMCARD.ACCEPTED=1
AND prt.ID IN(2)
AND FFMapRep.Saledate < to_date('01.03.2007', 'DD.MM.YYYY')
AND SMDOCUMENTS.docstate = 3
AND FFMapRep.article IN('0003672'))

GROUP BY FFMapRep.article, SMCARD.NAME, pr.price, prt.name, nvl(FFMapRep.Salelocationto, FFMapRep.Salelocationfrom)
ORDER BY LOCATION ASC
 
19.03.2007 08:21  
Mtirt
Во внешнем запросе - Sum, во внутреннем - Max. Добавь еще одну группировку...
 
19.03.2007 08:24  
dmware
Цитата:
Сообщение от Mtirt
Во внешнем запросе - Sum, во внутреннем - Max. Добавь еще одну группировку...
Извини, не совсем понятно, каким образом) А разве здесь не так?
SUM(MAX(INCOMEQ) - MAX(SALEQ))
Сначала sum, затем max.
 
19.03.2007 08:26  
Mtirt
2 запроса. Один внутри другого.
а у тебя 2 функции.
 
19.03.2007 08:35  
dmware
Если я правильно понял, что-то вроде:
(SUM(
(SELECT
MAX((INCOMEQ))
from ffmaprep
WHERE
ARTICLE='0003672'
AND SALEDATE <= to_date('01.03.2007', 'DD.MM.YYYY')
AND nvl(SALELOCATIONFROM, SALELOCATIONTO) IN(6)
GROUP BY INCOMEID, (INCOMEQ))))
Но в данном случае внутренний запрос возвратит более одной строки, о чем и сообщает oracle
 
19.03.2007 08:38  
Mtirt
Приблизительно так:
Код:
select SUM(QQ) from
(SELECT
MAX(INCOMEQ)-max(saleq) QQ
from ffmaprep
WHERE
ARTICLE='3672'
AND SALEDATE <= to_date('01.03.2007', 'DD.MM.YYYY')
AND nvl(SALELOCATIONFROM, SALELOCATIONTO) IN(6)
GROUP BY INCOMEID, INCOMEQ)
 
 


Опции темы



Часовой пояс GMT +3, время: 21:24.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.