sub-select com bug será ?
amigos estou tentando fazer um sub-select da seguinte maneira
porem da erro
quando eu retiro o where
funciona blz, será que alguem tem uma solução para isto ?
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
Curtidas 0
Respostas
Sremulador
28/06/2006
estou utilizando o FB RC2
GOSTEI 0
Sremulador
28/06/2006
help... :?: :?: :?:
GOSTEI 0
Emerson Nascimento
28/06/2006
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.
GOSTEI 0
Sremulador
28/06/2006
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
...
Tipo assim
Unidade Qint
10 Leitos 50 Internações
20 Leitos 150 Internações
...
GOSTEI 0
Emerson Nascimento
28/06/2006
eu não conheço a estrutura das suas tabelas (mas que nome de campos, hein?) mas de qualquer forma, tente assim:
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.
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.
GOSTEI 0
Sremulador
28/06/2006
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...
GOSTEI 0
Emerson Nascimento
28/06/2006
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?
GOSTEI 0
Sremulador
28/06/2006
- 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...
GOSTEI 0
Emerson Nascimento
28/06/2006
se você pusesse os prefixos nos campos seria tão mais fácil...
de qualquer forma, tente assim:
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
GOSTEI 0
Sremulador
28/06/2006
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
o que você diz ?
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 ?
GOSTEI 0
Emerson Nascimento
28/06/2006
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: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...
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
GOSTEI 0