Ir para conteúdo
  • 0
josePeixoto

Consultas retornando os mesmos valors

Pergunta

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á!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 resposta a esta questão

Recommended Posts

  • 0

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por teteuvec
      Prezados boa noite!
       
      Gostaria de ajuda com um problemas na pesquisa select do trecho abaixo. Devo estar errando na sintaxe.
       
      O erro que retorna é Unknown column 'link_record' in 'where clause', porém esta coluna existe!
       
      <td bgcolor="#F5F5F5"><?php $query_Recordset2 = "SELECT * FROM {$_SESSION['table_base']} WHERE `link_record` = {$data1['id']} AND `record_caracter_id` = '1' order by {$_SESSION['id_base']} DESC"; $Recordset2 = mysqli_query($connect, $query_Recordset2) or die(mysqli_error($connect)); $row_Recordset2 = mysqli_fetch_assoc($Recordset2); $totalRows_Recordset2 = mysqli_num_rows($Recordset2); while($data2 = mysqli_fetch_assoc($Recordset2)) { echo "Contato: ".$data2["name"]."</br>"; echo "CPF/CNPJ: ".$data2["cpf_cnpj"]."</br>"; echo "e-mail: ".$data2["email"]."</br>"; echo "Celular: ".$data2["cellphone"]."</br>"; echo "Telefone: ".$data2["telephone"]."</br>"; echo "Documento de identificação: ".$data2["name"]."</br>"; echo "</br>"; }?> </td>  
    • Por Omar~
      Estou precisando fazer uma query em uma tabela usando LIKE, mas preciso restringir que somente sejam mostrados os resultados cujo tenha uma das colunas idênticas.
      Exemplo de query (que está errada!!!)
      SELECT     coluna_A,     coluna_B,     coluna_C FROM     tabela WHERE     coluna_A LIKE '%ALGUM_VALOR%' OR     coluna_B LIKE '%ALGUM_VALOR%' AND     coluna_C = 'tenha esse valor' Então preciso pesquisar existência de "algum valor" dentro das colunas A e B da tabela, mas que sejam retornados apenas resultados cujo a coluna C seja apenas um valor, que pode duplicar de registro para registro, mas na mesma tabela possuem outros registros cujo a coluna C não são iguais.
       
      Obs.: Sempre fiz esse processo de filtrar o resultado via PHP, mas queria saber como fazer diretamente na query.

      #EDIT:
      Sendo mais específico
      Digamos registros mais ou menos assim:
       
      SELECT coluna_A, coluna_B, coluna_C FROM tabela WHERE coluna_A LIKE '%João%' OR coluna_B LIKE '%João% AND   coluna_C = 'Carpinteiro'
      Ou seja mesmo que que haja mais de um registro, somente é para trazer os resultados cujo a coluna C for carpinteiro
       
       
       
       
    • Por aronrissato
      Boa tarde,

      Tenho um banco de dados de uma empresa na plataforma Oracle SQL. Temos 3.992 tabelas nesse banco, e eu precisava verificar uma informação que não sei em qual tabela está.
      Pelo menos para facilitar minha procura, algumas dessas tabelas não possuem registros. Então precisava descobrir:

      Tem alguma forma de filtrar as tabelas que não possuem registro em um banco?

      Para que possa olhar somente nas que possui alguma informação.

      Desde já agradeço!
      Att,

      Aron Rissato
      aron_0.4@hotmail.com
    • Por ripa
      Estou enfrentando um problema, eu possuo dois selects sql
      select * from web.demonstrativo_processados where nroempresa = 1 and data between to_date('2018/01/01' , 'yyyy/mm/dd') and to_date('2018/12/31' , 'yyyy/mm/dd') que me trás os valores do ano de 2018 e tenho este:

      select * from web.demonstrativo_processados where nroempresa = 1 and data between to_date('2017/01/01' , 'yyyy/mm/dd') and to_date('2017/12/31' , 'yyyy/mm/dd') Que retorna os valores de 2017. 
       
      Eu gostaria que viesse como resposta estas duas colunas que estão em azul, por isso preciso integrar os 2 selects.
      Como estou usando o php e o google charts para gerar gráficos, iria me facilitar muito o trabalho. gráfico que pretendo fazer

       o while que uso para pegar os valores
      <html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Mês', '2017', '2018'], <?php include ("./conexao_local.php"); $sql = "select * from web.demonstrativo_processados where nroempresa = 1 and data between to_date('2017/01/01' , 'yyyy/mm/dd') and to_date('2017/12/31' , 'yyyy/mm/dd')"; $stmt = oci_parse($conexao, $sql); oci_execute($stmt); while (($array = oci_fetch_array($stmt, OCI_BOTH)) != false) { $valorvenda = $array["VLRVENDA"]; $valorvenda1 = str_replace(",",".", $valorvenda); ?> ['Mês 2017', <?php echo $valorvenda1 ?>,400], <?php } ?> ]); var options = { title: 'Company Performance', hAxis: {title: 'Year', titleTextStyle: {color: '#333'}}, vAxis: {minValue: 0} }; var chart = new google.visualization.AreaChart(document.getElementById('chart_div_1')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div_1" style="width: 100%; height: 500px;"></div> </body> </html>  
      Obrigado...
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.