Array
(
)

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

Armando.boza
   - 06 ago 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?????


Emerson
   - 06 ago 2004

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


Armando.boza
   - 06 ago 2004


Citação:
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......


Paulo_amorim
   - 06 ago 2004

Olá

Outra alternativa

#Código

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é+


Armando.boza
   - 06 ago 2004


Citação:
Olá

Outra alternativa

#Código

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.....