Fórum sub-select com bug será ? #56374

28/06/2006

0

amigos estou tentando fazer um sub-select da seguinte maneira

SELECT CCDS, COUNT(CCDS), (SELECT COUNT(L.LTEN) FROM LEITOS L WHERE L.LTEN=INEN) FROM INTERNACAO
INNER JOIN LEITOS ON (LTLT=INLT AND LTEN=INEN)
INNER JOIN CENTRODECUSTO ON (CCCD=LTCC)
WHERE INDI BETWEEN ´05/01/06´ AND ´05/31/06´ AND INDA IS NOT NULL
GROUP BY CCDS


porem da erro

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).


quando eu retiro o where

SELECT CCDS, COUNT(CCDS), (SELECT COUNT(L.LTEN) FROM LEITOS L) FROM INTERNACAO
INNER JOIN LEITOS ON (LTLT=INLT AND LTEN=INEN)
INNER JOIN CENTRODECUSTO ON (CCCD=LTCC)
WHERE INDI BETWEEN ´05/01/06´ AND ´05/31/06´ AND INDA IS NOT NULL
GROUP BY CCDS



funciona blz, será que alguem tem uma solução para isto ?


Sremulador

Sremulador

Responder

Posts

28/06/2006

Sremulador

estou utilizando o FB RC2


Responder

Gostei + 0

04/07/2006

Sremulador

help... :?: :?: :?:


Responder

Gostei + 0

04/07/2006

Emerson Nascimento

sua instrução está um pouco confusa. explique exatamente o que vc precisa, de preferência mostrando como o resultado aparece e como deveria ser.


Responder

Gostei + 0

05/07/2006

Sremulador

bem e tipo assim, quero tirar a quantidade de internação e obter o total de leitos mas por unidade..., e quero ligar as internações x unidade

Tipo assim

Unidade Qint
10 Leitos 50 Internações
20 Leitos 150 Internações

...


Responder

Gostei + 0

05/07/2006

Emerson Nascimento

eu não conheço a estrutura das suas tabelas (mas que nome de campos, hein?) mas de qualquer forma, tente assim:
SELECT
  CC.CCDS,
  COUNT(DISTINC INTER.INEN) LEITOS,
  COUNT(INTER.INEN) INTERNACOES
FROM
  INTERNACAO INTER
INNER JOIN
  CENTRODECUSTO CC ON (CC.CCCD=INTER.LTCC)
WHERE
  INTER.INDI BETWEEN ´05/01/06´ AND ´05/31/06´
  AND INTER.INDA IS NOT NULL
GROUP BY
  CC.CCDS

outra coisa: sempre use um identificador para a tabela quando informar um campo. assim nós, que não temos acesso à sua base de dados, pelo menos poderemos ter noção de como proceder com relacionamentos, somas, etc.


Responder

Gostei + 0

06/07/2006

Sremulador

SELECT 
  CC.CCDS, 
  COUNT(DISTINC INTER.INEN) [b]LEITOS[/b], 
  COUNT(INTER.INEN) INTERNACOES 
FROM 
  INTERNACAO INTER 
INNER JOIN 
  CENTRODECUSTO CC ON (CC.CCCD=INTER.LTCC) 
WHERE 
  INTER.INDI BETWEEN ´05/01/06´ AND ´05/31/06´ 
  AND INTER.INDA IS NOT NULL 
GROUP BY 
  CC.CCDS


amigo leitos e outra tabela, então eu quero a quantidade de leitos a quantidade de internação que teve naquele leito no periodo...

valeu...


Responder

Gostei + 0

06/07/2006

Emerson Nascimento

amigo leitos e outra tabela, então eu quero a quantidade de leitos a quantidade de internação que teve naquele leito no periodo... valeu...
eu entendi que LEITOS é outra tabela. mas no resultado de exemplo que você citou num post mais acima
Unidade Qint 10 Leitos 50 Internações 20 Leitos 150 Internações

me pareceu que você gostaria da quantidade de leitos e a quantidade de internações por unidade.
agora você está dizendo que quer a ´quantidade de leitos e a quantidade de internação que teve naquele leito no periodo´.
então minha pergunta:
- você quer a quantidade de leitos e quantidade de internações por unidade,
ou
- você quer a quantidade de leitos por unidade e a quantidade de internações de cada leito?

mais uma pergunta: você testou a instrução que eu te passei?


Responder

Gostei + 0

06/07/2006

Sremulador

- você quer a quantidade de leitos e quantidade de internações por unidade


sim

mais uma pergunta: você testou a instrução que eu te passei?


sim

quero a quantidade de leitos existentes e a quantidade de internações por unidade de leito, que no caso tem um campo na tabela de leitos que representa a unidade.

SELECT CCDS, COUNT(INCD), COUNT((SELECT COUNT(LTLT) FROM LEITOS WHERE LTLT=INLT AND LTEN=INEN)) TAX FROM INTERNACAO
INNER JOIN LEITOS ON (LTLT=INLT AND LTEN=INEN)
INNER JOIN CENTRODECUSTO ON (CCCD=LTCC)
GROUP BY CCDS



fiz até aqui, porem o resultado não esta bantendo,

valeu...


Responder

Gostei + 0

06/07/2006

Emerson Nascimento

se você pusesse os prefixos nos campos seria tão mais fácil...

de qualquer forma, tente assim:
SELECT
  INEN UNIDADE,
  CCDS CENTROCUSTO,
  COUNT(INCD) INTERNACOES,
  (SELECT COUNT(LTLT) FROM LEITOS WHERE LTEN=INEN) LEITOS
FROM
  INTERNACAO
INNER JOIN
  CENTRODECUSTO ON (CCCD=LTCC) 
GROUP BY
  INEN, CCDS



Responder

Gostei + 0

07/07/2006

Sremulador

Amigo eu fiz assim, porem continua dando aquele erro chato, fiz da maneira que voce descriveu, porem esta dizendo que LTCC não existe, pois não temos nenhuma referencia para a tabela leitos

SELECT INEN UNIDADE, CCDS CENTROCUSTO, COUNT(INCD) INTERNACOES, (SELECT COUNT(L.LTLT) FROM LEITOS L WHERE L.LTEN=INEN AND LTLT=INLT) LEITOSP FROM INTERNACAO
INNER JOIN LEITOS ON (LTLT=INLT AND LTEN=INEN)
INNER JOIN CENTRODECUSTO ON (CCCD=LTCC)
GROUP BY INEN, CCDS


o que você diz ?


Responder

Gostei + 0

07/07/2006

Emerson Nascimento

o que eu digo?

1o. ponha a referencia da tabela nos seus campos quando exemplificar algo para quem não tem acesso à suas tabelas. eu nunca iria saber que o campo LTCC pertece à tabela leitos se você não dissesse...
2o. pelo que eu estou vendo, não poderá ser exibido, em princípio, esse campo do centro de custo (mesmo poque ele não aparece no seu exemplo de resultado). tente assim e veja no que resulta:
SELECT
  INEN UNIDADE,
  COUNT(INCD) INTERNACOES,
  (SELECT COUNT(LTLT)
   FROM LEITOS WHERE LTEN=INEN) LEITOS
FROM
  INTERNACAO
GROUP BY
  INEN
3o. se possível publique a estrutura das suas tabela e algum conteúdo pra que possamos testar e te ajudarmos de forma satisfatória...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar