Problema c/ ORDER BY COUNT(*) DESC !!!

06/08/2004

Pessoal... estou tentando dar uma select no meu banco interbase 6 e não está aceitando.
A select é esta...

SELECT COUNT(*),CIRURGIAINT FROM INTERNACAO WHERE DATACIRINT BETWEEN :DATA1 AND :DATA2 AND ESPINT = ´´PSC´´ GROUP BY CIRURGIAINT ORDER BY COUNT(*) DESC

Se eu tirar o ORDER BY COUNT(*) DESC funciona perfeitamente só que não busca na ordem que eu quero.......

Será que o interbase não aceita esta opção?????


Armando.boza

Respostas

06/08/2004

Emerson

quando voce utiliza um campo agregado ou calculado (count, avg, min, max) você deve tratá-lo pelo seu índice.

SELECT COUNT(*), CIRURGIAINT
FROM INTERNACAO
WHERE (DATACIRINT BETWEEN :DATA1 AND :DATA2) AND (ESPINT=´´PSC´´)
GROUP BY CIRURGIAINT
ORDER BY 1 DESC


Responder Citar

06/08/2004

Armando.boza

quando voce utiliza um campo agregado ou calculado (count, avg, min, max) você deve tratá-lo pelo seu índice. SELECT COUNT(*), CIRURGIAINT FROM INTERNACAO WHERE (DATACIRINT BETWEEN :DATA1 AND :DATA2) AND (ESPINT=´´PSC´´) GROUP BY CIRURGIAINT ORDER BY 1 DESC


emerson.en.... muito obrigado pela dica.... não sabia deste detalhe...
Agora está funcionando perfeitamente..
Muito obrigado mais uma vez......


Responder Citar

06/08/2004

Paulo_amorim

Olá

Outra alternativa

SELECT * FROM 
(SELECT COUNT(*) cont, CIRURGIAINT
FROM INTERNACAO
WHERE (DATACIRINT BETWEEN :DATA1 AND :DATA2) AND (ESPINT=´´PSC´´)
GROUP BY CIRURGIAINT)
ORDER BY cont DESC


Até+


Responder Citar

06/08/2004

Armando.boza

Olá Outra alternativa
SELECT * FROM 
(SELECT COUNT(*) cont, CIRURGIAINT
FROM INTERNACAO
WHERE (DATACIRINT BETWEEN :DATA1 AND :DATA2) AND (ESPINT=´´PSC´´)
GROUP BY CIRURGIAINT)
ORDER BY cont DESC
Até+


Muito obrigado Paulo.... valeu a sua dica tb.... é bom contar com outras opções.....


Responder Citar