Pular para o conteúdo
Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • #82751
    Avatar de alcampagnanialcampagnani
    Participante

      Galera, tenho 3 consultas que preciso que funcionem, para fins acadêmicos.

      select D.nom_dentista, SUM(val_pagamento) as “pagto”,
      from dentista D, Pagamento PG, consulta C
      where C.num_dentista = D.num_dentista
      and PG.num_consulta = C.num_consulta
      and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
      group by D.num_dentista
      having pagto > 2500

      select D.nom_dentista , SUM(val_pagamento) “pagto”,
      from dentista D, Pagamento PG, consulta C
      where C.num_dentista = D.num_dentista
      and PG.num_consulta = C.num_consulta
      and C.dat_consulta between ‘2007-12-01’ and ‘2008-12-31’
      group by D.num_dentista
      having pagto > 2500
      UNION
      select D.nom_dentista , SUM(val_pagamento) pagto
      from dentista D, Pagamento PG, consulta C
      where C.num_dentista = D.num_dentista
      and PG.num_consulta = C.num_consulta
      and C.dat_consulta between ‘2007-12-01’ and ‘2008-12-31’
      group by D.num_dentista
      having SUM(val_pagamento) > 2500

      select D.nom_dentista, SUM(val_pagamento) as “pagto”,
      from dentista D, Pagamento PG, consulta C
      where C.num_dentista = D.num_dentista
      and PG.num_consulta = C.num_consulta
      and C.dat_consulta between ‘2007-12-01’ and ‘2008-12-31’
      and D.num_dentista in (
      select D.num_dentista
      from dentista D, Pagamento PG, consulta C
      where C.num_dentista = D.num_dentista
      and PG.num_consulta = C.num_consulta
      and C.dat_consulta between ‘2007-02-01’ and ‘2008-02-28’
      group by D.num_dentista
      having SUM(val_pagamento) > 2500)
      group by D.num_dentista
      having SUM(val_pagamento) > 2500

      TODOS OS TRÊS APRESENTAM A MENSAGEM: ORA-00936: expressão não encontrada.

      Alguém Poderia Me Ajudar?

      #82759
      Avatar de IshiiIshii
      Participante

        Olá,

        Em todas as três expressões há uma vírgula antes da palavra from e com isso o parse fica esperando outra coluna…

        []s Ishii

        #82762
        Avatar de alcampagnanialcampagnani
        Participante

          Essa virgula eu coloquei agora, não tinha mesmo.

          Agora apresenta essa mensagem ORA-00904: “PAGTO”: identificador inválido

          #82763
          Avatar de IshiiIshii
          Participante

            Olá,

            Não havia notado… nas expressões de agrupamento, ordenação etc. você tem que utilizar a expressão correta e não o alias dela..

            Tente com SUM(val_pagamento) em vez de pagto (alias)

            []s Ishii

            #82765
            Avatar de alcampagnanialcampagnani
            Participante

              select D.nom_dentista, SUM(val_pagamento) as “pagto”,
              from dentista D, Pagamento PG, consulta C
              where C.num_dentista = D.num_dentista
              and PG.num_consulta = C.num_consulta
              and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
              group by D.num_dentista
              having pagto > 2500

              não entendi, desculpe sou meio leigo em sql.[/b]

              #82767
              Avatar de alcampagnanialcampagnani
              Participante

                select D.nom_dentista, SUM(val_pagamento) as “pagto”,
                from dentista D, Pagamento PG, consulta C
                where C.num_dentista = D.num_dentista
                and PG.num_consulta = C.num_consulta
                and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
                group by D.num_dentista
                //Aqui é o agrupamento por número do dentista.
                having pagto > 2500
                // Se eu mudo da forma que falou aqui, aparece a mensagem: ORA-00979: não é uma expressão GROUP BY

                não entendi, desculpe sou meio leigo em sql.

                #82768
                Avatar de IshiiIshii
                Participante

                  [quote=”alcampagnani”:d0urmd4k]select D.nom_dentista, SUM(val_pagamento) as “pagto”,
                  from dentista D, Pagamento PG, consulta C
                  where C.num_dentista = D.num_dentista
                  and PG.num_consulta = C.num_consulta
                  and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
                  group by D.num_dentista
                  //Aqui é o agrupamento por número do dentista.
                  having pagto > 2500
                  // Se eu mudo da forma que falou aqui, aparece a mensagem: ORA-00979: não é uma expressão GROUP BY

                  não entendi, desculpe sou meio leigo em sql.[/quote]

                  Deixe assim:

                  MensagemEnviada: 2008-09-19, 11:55:05 Assunto:
                  select D.nom_dentista, SUM(val_pagamento) as "pagto",
                  from dentista D, Pagamento PG, consulta C
                  where C.num_dentista = D.num_dentista
                  and PG.num_consulta = C.num_consulta
                  and C.dat_consulta between '2008-01-01' and '2008-02-28'
                  group by D.num_dentista
                  having SUM(val_pagamento) > 2500

                  []s Ishii

                  #82769
                  Avatar de alcampagnanialcampagnani
                  Participante

                    select D.nom_dentista, SUM(val_pagamento) as "pagto",
                    from dentista D, Pagamento PG, consulta C
                    where C.num_dentista = D.num_dentista
                    and PG.num_consulta = C.num_consulta
                    and C.dat_consulta between '2008-01-01' and '2008-02-28'
                    group by D.num_dentista
                    having SUM(val_pagamento)> 2500

                    ORA-00936: expressão não encontrada

                    #82771
                    Avatar de IshiiIshii
                    Participante

                      Olá,

                      Desculpe-me esqueci de remover a vírgula…
                      select D.nom_dentista, SUM(val_pagamento) as "pagto"
                      from dentista D, Pagamento PG, consulta C
                      where C.num_dentista = D.num_dentista
                      and PG.num_consulta = C.num_consulta
                      and C.dat_consulta between '2008-01-01' and '2008-02-28'
                      group by D.num_dentista
                      having SUM(val_pagamento)> 2500

                      []s Ishii

                      #82772
                      Avatar de alcampagnanialcampagnani
                      Participante

                        agora temos:

                        ORA-00979: não é uma expressão GROUP BY

                        #82778
                        Avatar de IshiiIshii
                        Participante

                          Tente

                          select D.nom_dentista, SUM(val_pagamento) as "pagto"
                          from dentista D, Pagamento PG, consulta C
                          where C.num_dentista = D.num_dentista
                          and PG.num_consulta = C.num_consulta
                          and C.dat_consulta between '2008-01-01' and '2008-02-28'
                          group by D.nom_dentista
                          having SUM(val_pagamento)> 2500

                          Não sei se num_dentista ou nom_dentista…

                          []s Ishii

                        Visualizando 11 posts - 1 até 11 (de 11 do total)
                        • Você deve fazer login para responder a este tópico.
                        plugins premium WordPress