Fórum Soma entre datas #330096
26/09/2006
0
Para que seja melhor entendido, quero fazer a soma do dia (exemplo)01/01/2006 a 30/01/2006 e que contenha a palavra credito.
tentei desta forma e da erro
Select data, SUM(valor) From Financeiro Where Data Between :DataI and :DataF and cred_deb = ´cred´
se coloco o [b:5497822161]GROUP BY [/b:5497822161]da erro:
Select data, SUM(valor) From Financeiro Where Data Between :DataI and :DataF and cred_deb = ´cred´ group by data;
ERRO: [b:5497822161]Type mismatch in expression.[/b:5497822161]
Procurei no forum mas não encotrei nada disso aqui. :lol:
Vagner.oliveira
Curtir tópico
+ 0Posts
26/09/2006
Marco Salles
No seu caso :O conjunto de resltado da sua instrução select é apenas um valor .. Ou seja uma Soma.. Portanto não há o que agregar
é válido lembrar que todos os campo não calculados devem aparecer na
clausu-la group by.. .. Mas o campo Data no seu caso , esta na clausu-la where e portando não se aplica esse critério..
Gostei + 0
27/09/2006
Siam
Como está no Banco o campo Data e como vc alimenta :DataI e :DataF ?
Gostei + 0
27/09/2006
Marco Salles
Se segunda esta ´certa´ ,[b:59ea8d787f] a primeira tb esta[/b:59ea8d787f] ... Mesmo que não de erro na segunda acho no minimo esquisito Agrupar algo do nada
o fato é que li o post rapidamente e não vi qua o amigo [b:59ea8d787f]não tinha conseguido[/b:59ea8d787f] com a primeira instrução
o fato é que se tem um erro do tipo apresentado ERRO: Type mismatch in expression.
isto resolve quanto ao problema do erro apresentado... Mas o groupBy acho desnecessário
Gostei + 0
27/09/2006
Macario
Pelo visto no codigo, ele quer a soma diaria de um periodo e nao a soma total do periodo, portanto o uso da agregacao.
Exemplo:
Qry.Close; Qry.Params.ParamByName(´DATAI´).asDatetime = DataI; Qry.Params.ParamByName(´DATAF´).asDatetime = DataF; Qry.Open;
Gostei + 0
27/09/2006
Siam
O agrupamento faz sentido, desde que ele queira a soma dos valores por data.
Gostei + 0
27/09/2006
Marco Salles
Sua sql retornara [b:abd0172705]apenas um unico valor [/b:abd0172705]e não precisa ou não tem que agrupar nada...
isto não é agrupamento .. isto é apenas uma[b:abd0172705] restrição [/b:abd0172705]
Alem da restrição por data ainda tem a restrição que os registros tenham a palavra credito
e o campo credio , ande voce colocaria na clausula Group By ????
pode não dar erro , mas não tem sentido
Gostei + 0
27/09/2006
Siam
Não faria sentido se se quisesse a soma total do período, aí o campo data teria que ser retirado do Select.
Gostei + 0
27/09/2006
Macario
Dados: DATA-----VALOR > TIPO 10/09-----200,00 > DEB 10/09-----150,00 > CRE 10/09-----100,00 > CRE 11/09-----200,00 > DEB 11/09-----150,00 > CRE 11/09-----100,00 > CRE
Select data, SUM(valor) From Financeiro Where Data Between :DataI and :DataF and cred_deb = ´cred´
Resultado DATA-----VALOR 10/09-----250,00 11/09-----250,00
Compreende.
Gostei + 0
27/09/2006
Vagner.oliveira
Gostei + 0
27/09/2006
Siam
Gostei + 0
27/09/2006
Vagner.oliveira
Dados: DATA-----VALOR > TIPO 10/09-----200,00 > DEB 10/09-----150,00 > CRE 10/09-----100,00 > CRE 11/09-----200,00 > DEB 11/09-----150,00 > CRE 11/09-----100,00 > CRE
Select data, SUM(valor) From Financeiro Where Data Between :DataI and :DataF and cred_deb = ´cred´
Resultado DATA-----VALOR 10/09-----250,00 11/09-----250,00
Compeendo, so não entendo porque da este erro:
[b:cd908d6428]GROUP BY is required when both aggregate and non-aggregate fields are used in result set.[/b:cd908d6428]
Gostei + 0
27/09/2006
Macario
Sim o group by e requerido
corrigindo o post.
Dados: DATA-----VALOR > TIPO 10/09-----200,00 > DEB 10/09-----150,00 > CRE 10/09-----100,00 > CRE 11/09-----200,00 > DEB 11/09-----150,00 > CRE 11/09-----100,00 > CRE
Select data, SUM(valor) From Financeiro Where Data Between :DataI and :DataF and cred_deb = ´cred´ [b]group by data[/b]
Resultado DATA-----VALOR 10/09-----250,00 11/09-----250,00
Gostei + 0
27/09/2006
Fknyght
Select data, SUM(valor) From Financeiro Where Data >= :DataI and data <= :DataF and cred_deb like ´cred¬´ group by data
tenta ai, ve se resolve
Gostei + 0
27/09/2006
Marco Salles
olha , escrevi alguma coisa e fiz outra
[b:dac6ae2a47]eu não vi o campo data[/b:dac6ae2a47] fazendo parte do[b:dac6ae2a47] select.. [/b:dac6ae2a47]To desde do inico falando que o resultado seria um unico valor.. Recebi notificaçoes dizendo da clausula do GroupBy , mas nada contestando esta afirmação
pensei que o select era este :oops: :oops:
por isso estava batendo na tecla que não precisa do Group-By porque para mim ele estava fazendo somente uma soma em um detreminado periodo
agora que o [b:dac6ae2a47]marcario[/b:dac6ae2a47] postou , vi que tinha o [b:dac6ae2a47]campo data [/b:dac6ae2a47], :cry: ai fui ver o post original vi tb que tinha o campo data :cry: .. Ora , sto não era nen para ´discutir´ , pois todos sabemos que :
[b:dac6ae2a47]Todos os campos não calculados devem aparecer na clausula Group_by[/b:dac6ae2a47]
é.......
Gostei + 0
27/09/2006
Macario
Por isso coloquei para nao ter [b:cb865f0363]Equivoco[/b:cb865f0363].
O posto do nosso colega Vagner, estava sem maiores indicacoes da necessidade dele, se o agrupamento era geral pelo periodo(no caso se aplica a tua indicacao inicial), ou por data dentro do periodo conforme o exemplo que postei.
[]´s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)