Criação de Query

18/06/2010

0

Pessoa, eu tenho uma tabela de lançamentos de movimentos bancários e gostaria de contar os registros por pessoa.   Tabela Pessoa: IdPessoa, NomePessoa Table Movimentos: IdMovimento, IdPessoa, DataMovimento   Ficaria assim:   Mês             IdPessoa       QtdMovimentos Janeiro           01                       2 Fevereiro        02                       5 Março            03                       4   Tentei na sala MySQL mas ninguém respondeu, preciso disso o mais rápido possível, se alguém poder me ajudar...   Obrigado pessoal!
Paulo Andrade

Paulo Andrade

Responder

Posts

18/06/2010

Tiago Melo

selec M.Mes, P.IdPessoa, Count(M.*) as QtdMovimentos
  from Movimentos M
  inner join Pessoa P
  on M.IdPessoa = P.IdPessoa
Group ByM.Mes, P.IdPessoa 
Responder

18/06/2010

Wilson Junior

Segue abaixo:
SELECT
  EXTRACT(MONTH FROM mov.DataMovimento) AS Mes,
  pes.NomePessoa,
  COUNT(mov.IdMovimento) AS Qtde
FROM
  MOVIMENTOS mov
    INNER JOIN PESSOA pes ON (mov.IdPessoa = pes.IdPessoa)
GROUP BY
  EXTRACT(MONTH FROM mov.DataMovimento),
  pes.NomePessoa


Espero ter colaborado.
Responder

18/06/2010

Paulo Andrade

Segue abaixo:
SELECT
  EXTRACT(MONTH FROM mov.DataMovimento) AS Mes,
  pes.NomePessoa,
  COUNT(mov.IdMovimento) AS Qtde
FROM
  MOVIMENTOS mov
    INNER JOIN PESSOA pes ON (mov.IdPessoa = pes.IdPessoa)
GROUP BY
  EXTRACT(MONTH FROM mov.DataMovimento),
  pes.NomePessoa


Espero ter colaborado.
. . Quando tento rodar, dá erro de sintaxe, (operador faltando)!
Responder

18/06/2010

Tiago Melo

tem que ver porque esse script que o colega pssou acima só irá funcionar no firebird não é sql ansi....
se vc não usa firebird este ai não serve
Responder

18/06/2010

Paulo Andrade

tem que ver porque esse script que o colega pssou acima só irá funcionar no firebird não é sql ansi....
se vc não usa firebird este ai não serve
. . .   Exato, eu uso SQL axo q por isso que n está dando certo.   SELECT tblPessoa.NomePessoa, Count(tblMovimento.IdPessoa) AS Qtde, Month([Data]) AS Mes
FROM tblPessoa INNER JOIN tblMovimento ON tblPessoa.IdPessoa = tblMovimento.IdPessoa
GROUP BY tblPessoa.NomePessoa, tblMovimento.IdPessoa, Month([Data]);   O código acima funcionou, mas não tou conseguindo fazer aparecer o nome do mês ao invés do número:   Mes     Pessoa        Qtde 6         Joçao            1 6         Francisco      1 6         Alberto         2
Responder

18/06/2010

Tiago Melo

amigo vc teria que fazer algumas alterações no master isso se vc usa sql server para poder aparecer o nome dos meses em portugues, porque no caso apareceria em inglês que é o padrão. Porém para resolver esse problema, você pode colocar um case da seguinte maneira

SELECT tblPessoa.NomePessoa, Count(tblMovimento.IdPessoa) AS Qtde, Month([Data]),

Case Month([Data])
  when 1 then 'Janeiro'
  when 2 then 'Fevereiro'
  when 3 then 'Março'
 
  até dezembro...
   
End Mes

FROM tblPessoa INNER JOIN tblMovimento ON tblPessoa.IdPessoa = tblMovimento.IdPessoa
GROUP BY tblPessoa.NomePessoa, tblMovimento.IdPessoa, Month([Data]);
Responder

18/06/2010

Paulo Andrade

amigo vc teria que fazer algumas alterações no master isso se vc usa sql server para poder aparecer o nome dos meses em portugues, porque no caso apareceria em inglês que é o padrão. Porém para resolver esse problema, você pode colocar um case da seguinte maneira

SELECT tblPessoa.NomePessoa, Count(tblMovimento.IdPessoa) AS Qtde, Month([Data]),

Case Month([Data])
  when 1 then 'Janeiro'
  when 2 then 'Fevereiro'
  when 3 then 'Março'
 
  até dezembro...
   
End Mes

FROM tblPessoa INNER JOIN tblMovimento ON tblPessoa.IdPessoa = tblMovimento.IdPessoa
GROUP BY tblPessoa.NomePessoa, tblMovimento.IdPessoa, Month([Data]);
. . .   Deu Erro de sitaxe, operador faltando na expressão de consulta 'Case Month([Data])
   when 1 then 'Janeiro'
   when 2 then 'Fevereiro'
   when 3 then 'Março'
   when 4 then 'Abril'
   when 5 then 'Maio'
   when 6 then 'Junho'
   when 7 then 'Julho'
   when 8 then 'Agosto'
   when 9 then 'Setembro'
   when 10'.
Responder

18/06/2010

Tiago Melo

posta ai o seu script sql
Responder

18/06/2010

Tiago Melo

só lembrando que em ... Case Month([Data]) esse [Data] é o seu campo de data ai...
Responder

18/06/2010

Paulo Andrade

só lembrando que em ... Case Month([Data]) esse [Data] é o seu campo de data ai...
.         SELECT tblPessoa.NomePessoa, Count(tblMovimento.IdPessoa) AS Qtde, Month([Data]) AS Mes
FROM tblPessoa INNER JOIN tblMovimento ON tblPessoa.IdPessoa=tblMovimento.IdPessoa
GROUP BY tblPessoa.NomePessoa, Month([Data]), tblMovimento.IdPessoa;
       
Responder

18/06/2010

Tiago Melo

SELECT tblPessoa.NomePessoa, Count(tblMovimento.IdPessoa) AS Qtde,
Case Month(SEU_CAMPO_DATA)
  when 1 then 'Janeiro'
  when 2 then 'Fevereiro'
  when 3 then 'Março'
  when 4 then 'Abril'
  when 5 then 'Maio'
  when 6 then 'Junho'
  when 7 then 'Julho'
  when 8 then 'Agosto'
  when 9 then 'Setembro'
  when 10 then 'Outubro'
  when 11 then 'Novembro'
  when 12 then 'Dezembro'
End Mes
FROM tblPessoa
INNER JOIN tblMovimento
ON tblPessoa.IdPessoa = tblMovimento.IdPessoa
GROUP BY tblPessoa.NomePessoa, Month(SEU_CAMPO_DATA), tblMovimento.IdPessoa;


pronto resolvido altere o o texto SEU_CAMPO_DATA pelo seu campo de data ai da sua tabela
que está resolvido............
Responder

18/06/2010

Tiago Melo

ainda na linha GROUP BY tblPessoa.NomePessoa, Month(SEU_CAMPO_DATA), tblMovimento.IdPessoa
o certo seria trocar Month(SEU_CAMPO_DATA) por mes, ja que apelidamos o resultado do case de mes entao seria...GROUP BY tblPessoa.NomePessoa, tblMovimento.IdPessoa, Mes

Responder

18/06/2010

Tiago Melo

ainda na linha GROUP BY tblPessoa.NomePessoa, Month(SEU_CAMPO_DATA), tblMovimento.IdPessoa
o certo seria trocar Month(SEU_CAMPO_DATA) por mes, ja que apelidamos o resultado do case de mes entao seria...GROUP BY tblPessoa.NomePessoa, tblMovimento.IdPessoa, Mes



ainda no sql server se vc quer o mês atual é isso aqui...

SELECT tblPessoa.NomePessoa, Count(tblMovimento.IdPessoa) AS Qtde,
Case Month(GetDate())
  when 1 then 'Janeiro'
  when 2 then 'Fevereiro'
  when 3 then 'Março'
  when 4 then 'Abril'
  when 5 then 'Maio'
  when 6 then 'Junho'
  when 7 then 'Julho'
  when 8 then 'Agosto'
  when 9 then 'Setembro'
  when 10 then 'Outubro'
  when 11 then 'Novembro'
  when 12 then 'Dezembro'
End Mes
FROM tblPessoa INNER JOIN tblMovimento ON tblPessoa.IdPessoa=tblMovimento.IdPessoa
GROUP BY tblPessoa.NomePessoa, tblMovimento.IdPessoa, Mes
Responder

18/06/2010

Paulo Andrade

Ae galera, se fosse vocês, talvez n conseguiri, vlw mesmo!!!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar