Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Anjos

SUB SELECT com GROUP BY

Recommended Posts

Boa tarde a todos!

 

Se alguém que já passou por isso e puder ajudar, agradeço! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

Preciso fazer o select abaixo porém agrupando os SubSelect's. Atualmente estou fazendo o GROUP na própria aplicação no momento do laço. Porém não é a melhor prática. Se agrupo o SELECT EXTERNO, o oracle me retorna o erro: "ORA 00979 - not a GROUP BY expression". Tenho ciência de que devo agrupar os subselect's também mas estou encontrando dificuldades.

 

Desde já agradeço a ajuda!

 

<div class='codetop'>CODE</div><div class='codemain' style='height:300px;white-space:pre;overflow-y:auto'>SELECT LOTE.DESCRICAO LOTE, LOTE.ARQUIVO, CLTR.CD_CLTR, CLTR.CUSTER, CLTR.DESCRICAO PRODUTO,

 

(

SELECT COUNT(1)

FROM CADVEND VEND, CADPROP PROP

WHERE VEND.NRPLAN = PROP.NRPLAN

AND VEND.CD_CLTR = CLTR.CD_CLTR

AND PROP.CD_LOTE IN (1)

AND PROP.DTDIGI BETWEEN TO_DATE('01/01/2008 00:00:00', 'DD/MM/YYYY HH24:MI:SS') AND

TO_DATE('10/04/2008 23:59:59', 'DD/MM/YYYY HH24:MI:SS')

) QTDE,

 

(

SELECT NVL(SUM(VLRPRODUTO), 0)

FROM CADVEND VEND, CADPROP PROP

WHERE VEND.NRPLAN = PROP.NRPLAN

AND VEND.CD_CLTR = CLTR.CD_CLTR

AND PROP.CD_LOTE IN (1)

AND PROP.DTDIGI BETWEEN TO_DATE('01/01/2008 00:00:00', 'DD/MM/YYYY HH24:MI:SS') AND

TO_DATE('10/04/2008 23:59:59', 'DD/MM/YYYY HH24:MI:SS')

) VALOR_TOTAL

 

FROM CADLOTE LOTE, CADCLTR CLTR

GROUP BY LOTE.DESCRICAO, LOTE.ARQUIVO, CLTR.CD_CLTR, CLTR.CUSTER, CLTR.DESCRICAO -- << SE RETIRO ESSA LINHA FUNCIONA, MAS PRECISO AGRUPAR

ORDER BY LOTE.DESCRICAO, CLTR.CUSTER, CLTR.DESCRICAO </div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com o COUNT e SUM fora dos selects ?

 

Ou

select lote, arquivo, cd-ctr , custer,descricao,sum(qtde), sum(valor_total) from (

 

SELECT LOTE.DESCRICAO LOTE, LOTE.ARQUIVO, CLTR.CD_CLTR, CLTR.CUSTER, CLTR.DESCRICAO PRODUTO, ( SELECT COUNT(1) FROM CADVEND VEND, CADPROP PROP WHERE VEND.NRPLAN = PROP.NRPLAN AND VEND.CD_CLTR = CLTR.CD_CLTR AND PROP.CD_LOTE IN (1) AND PROP.DTDIGI BETWEEN TO_DATE('01/01/2008 00:00:00', 'DD/MM/YYYY HH24:MI:SS') AND TO_DATE('10/04/2008 23:59:59', 'DD/MM/YYYY HH24:MI:SS') ) QTDE, ( SELECT NVL(SUM(VLRPRODUTO), 0) FROM CADVEND VEND, CADPROP PROP WHERE VEND.NRPLAN = PROP.NRPLAN AND VEND.CD_CLTR = CLTR.CD_CLTR AND PROP.CD_LOTE IN (1) AND PROP.DTDIGI BETWEEN TO_DATE('01/01/2008 00:00:00', 'DD/MM/YYYY HH24:MI:SS') AND TO_DATE('10/04/2008 23:59:59', 'DD/MM/YYYY HH24:MI:SS') ) VALOR_TOTAL FROM CADLOTE LOTE, CADCLTR CLTR )

group by lote, arquivo, cd-ctr , custer,descricao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi,

 

ainda não descobri porque isso acontece, mas para resolver altere a propriedade CursorLocation do componete que esta execultado a consulta de clUseClient para clUseServer save a aplicação e volte para a propriedade CursorLocation para clUseClient. Sua aplicação voltará a funcionar sem problemas.

 

http://support.codegear.com/article/36137

http://francisco-soares.blogspot.com/2009/...ression-em.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.