Publicidade

josePeixoto

Members
  • Total de itens

    10
  • Registro em

  • Última visita

Tudo que josePeixoto postou

  1. Olá, alguém pode me ajudar nessa consulta? SELECT TRUNC(a.dt_atualizacao) dt, (SELECT COUNT(a.cd_pessoa_fisica) FROM agenda_consulta f, adiantamento a, caixa_receb cr WHERE a.cd_pessoa_fisica = f.cd_pessoa_fisica AND a.nr_seq_caixa_rec = cr.nr_sequencia AND f.ie_classif_agenda ='P' AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final AND a.CD_ESTABELECIMENTO=:cd_estab) qtt_cons, (SELECT COUNT(a.cd_pessoa_fisica) FROM agenda_consulta f, adiantamento a, caixa_receb cr WHERE a.cd_pessoa_fisica = f.cd_pessoa_fisica AND a.nr_seq_caixa_rec = cr.nr_sequencia AND f.ie_classif_agenda ='Pr' AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final AND a.CD_ESTABELECIMENTO=:cd_estab) qtt_proc, (SELECT COUNT(a.cd_pessoa_fisica) FROM agenda_paciente f, adiantamento a, caixa_receb cr WHERE a.cd_pessoa_fisica = f.cd_pessoa_fisica AND a.nr_seq_caixa_rec = cr.nr_sequencia AND f.IE_STATUS_AGENDA ='E' AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final AND a.CD_ESTABELECIMENTO=:cd_estab) qtt_exa FROM adiantamento a, caixa_receb cr WHERE a.nr_seq_caixa_rec = cr.nr_sequencia AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final GROUP BY TRUNC(a.dt_atualizacao) ORDER BY 1; Ela ta me trazendo as datas direitinho, mas não está somando por elas, mas sim, tudo e colocando na tabela. Seguem os resultados 01/01/2017 68 15 10 02/01/2017 68 15 10 03/01/2017 68 15 10 04/01/2017 68 15 10 ... Alguém tem alguma noção do que tá errado ou como resolver? Obrigado desde já!!!
  2. Oi gente, já resolvi. O erro era por causa do "group by". Eu estava contando apenas dentro da subconsulta e não dentro da consulta em si. Fiz umas modificações e deu certo. Segue o código pra quem tiver o mesmo problema e quiser alguma noção de como resolve. SELECT TRUNC(a.dt_atualizacao) dt, sum((SELECT COUNT(a.cd_pessoa_fisica) FROM agenda_consulta f WHERE a.cd_pessoa_fisica = f.cd_pessoa_fisica AND a.nr_seq_caixa_rec = cr.nr_sequencia AND f.ie_classif_agenda ='P' AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final AND a.CD_ESTABELECIMENTO=:cd_estab)) qtt_cons, sum((SELECT COUNT(a.cd_pessoa_fisica) FROM agenda_consulta f WHERE a.cd_pessoa_fisica = f.cd_pessoa_fisica AND a.nr_seq_caixa_rec = cr.nr_sequencia AND f.ie_classif_agenda ='Pr' AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final AND a.CD_ESTABELECIMENTO=:cd_estab)) qtt_proc, sum((SELECT COUNT(a.cd_pessoa_fisica) FROM agenda_paciente f WHERE a.cd_pessoa_fisica = f.cd_pessoa_fisica AND a.nr_seq_caixa_rec = cr.nr_sequencia AND f.IE_STATUS_AGENDA ='E' AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final AND a.CD_ESTABELECIMENTO=:cd_estab)) qtt_exa FROM adiantamento a, caixa_receb cr WHERE a.nr_seq_caixa_rec = cr.nr_sequencia AND TRUNC(a.dt_atualizacao) BETWEEN :dt_inicial AND :dt_final group by TRUNC(a.dt_atualizacao) ORDER BY 1; Obrigado à todos.
  3. Olá, gostaria de saber uma forma de fazer uma consulta com a lógica abaixo: select t.id, (case when t.id = t2.id then count (1) ) from table1 t Só que eu não queria que a tabela t2 entrasse no 'from' da consulta externa. Há alguma maneira? Se não estiver claro, avisem que eu tento explicar de uma maneira mais clara. Obrigado desde já.
  4. acho que com um exemplo fica melhor. Tipo: Select t.id , (select count(*) from tabela2 t2 where t2.id = t1.id) qtdt2 From tabela1 t1 where t1.id is not null and t1.media > 3. A minha pergunta é: esse' where t1.id is not null and t1.media > 3' também tem que vir nesse select: (select count(*) from tabela2 t2 where t2.id = t1.id)? Obrigado pela atenção!
  5. Isso, mas as condições do select externo (where's) da tabela1 tem que estar tbm dentro desse select que tem a tabela2?
  6. Olá a todos! Eu gostaria de saber como funciona um plano de execução no Oracle e se isso é comumente usado nas empresas hoje. Eu procurei materiais na internet e não achei nada claro, porque estou tentando otimizar umas consultas. Obrigado desde já. Abraço!
  7. Olá, o meu problema é o seguinte: 1) quero fazer média de alguns valores 2) alguns são zero e outros são números negativos 3) não quero que os números negativos entrem na contagem, quero que eles sejam transformados em 0 e contabilizem na hora de fazer a média. Alguém saberia como fazer isso com uma condição dentro do where ou de alguma outra forma? Obrigado desde já!
  8. Olá, alguém poderia me informar onde está o erro dessa consulta? SELECT DISTINCT relatorio.CD_RELATORIO, relatorio.DT_ATUALIZACAO, relatorio.DS_TITULO descricao, obter_usuario_pf(relatorio_documentacao.CD_PF_SOLIC) Solicitante, obter_usuario_pf(relatorio_documentacao.CD_PF_CRIADOR) Criador, wm_concat(perfil.ds_perfil) Perfil FROM relatorio INNER JOIN relatorio_documentacao ON relatorio.NM_USUARIO = relatorio_documentacao.NM_USUARIO INNER JOIN relatorio_perfil ON relatorio_documentacao.NR_SEQ_RELATORIO = relatorio_perfil.NR_SEQ_RELATORIO INNER JOIN PERFIL ON relatorio_perfil.cd_perfil = perfil.cd_perfil WHERE obter_usuario_pf(relatorio_documentacao.CD_PF_SOLIC) IS NOT NULL AND obter_usuario_pf(relatorio_documentacao.CD_PF_CRIADOR) IS NOT NULL AND relatorio.DT_ATUALIZACAO BETWEEN :dt_inicio AND :dt_fim GROUP BY perfil.ds_perfil, relatorio.CD_RELATORIO, relatorio.DT_ATUALIZACAO, relatorio.DS_TITULO ORDER BY 4,2,1 Ele está dando o erro: ORA-00979: não é uma expressão GROUP BY. Obrigado desde já!
  9. oracle

    Olá, alguém saberia me dizer onde está o erro na função abaixo. function verifica_valor(x in number) return number is valor number; begin IF x:=0 then valor:=0; return valor; ELSE return x; end if; end; Sou novato no oracle, então não sei resolver questões assim de prima. Obrigado desde já.
  10. Olá, gostaria de saber como eu poderia otimizar a consulta para o cálculo de porcentagem abaixo: ((select count(a.cd_senha_gerada) contador from paciente_senha_fila a where obter_min_entre_datas(a.dt_geracao_senha, a.dt_primeira_chamada,1) > 15 and a.dt_geracao_senha between :dt_inicial and fim_dia(:dt_final) and a.dt_vinculacao_senha is not null and a.dt_inicio_atendimento is not null ) / (select count (a.cd_senha_gerada) contador from paciente_senha_fila a where obter_min_entre_datas(a.dt_geracao_senha, a.dt_primeira_chamada,1) > 0 and a.drt_geracao_senha between :dt_inicial and fim_dia(:dt_final) and a.dt_vinculacao_senha is not null and a.dt_inicio_atendimento is not null)) porcentagem Obrigado desde já!