Fórum Consulta SQL. Problema com GROUP BY #57900
13/02/2007
0
É o seguinte! Estou tendo problemas com a seguinte consulta SQL, que eu faço pra imprimir um relatório com as compras dos clientes.. só que esse relatório tem q ser agrupado por cliente..
Meu código no Delphi que eu estou usando é esse:
Inicio := DateToStr(DateTimePicker1.Date); Final := DateToStr(DateTimePicker2.Date); DataModule1.QrHist_Cli.Close; DataModule1.QrHist_Cli.SQL.Clear; DataModule1.QrHist_Cli.SQL.Add(´Select * FROM(F_Pagto LEFT JOIN Cheques ON F_Pagto.Codigo = Cheques.Cod_F_Pagto) LEFT JOIN Orcamentos ON F_Pagto.cod_orcamento=Orcamentos.orcamento´); DataModule1.QrHist_Cli.SQL.Add(´where data_emissao >= :pInicial and data_emissao <= :pFinal order by Orcamentos.Cod_Cliente´); DataModule1.QrHist_Cli.Parameters.ParamByName(´pInicial´).Value := StrToDate(Inicio); DataModule1.QrHist_Cli.Parameters.ParamByName(´pFinal´).Value := StrToDate(Final); DataModule1.QrHist_Cli.Open;
Funciona bem.. porém eu gostaria de agrupar por Clientes.. ou seja, pelo campo Orcamentos.Cod_Cliente ... mas qdo eu adiciono essa linha, obtenho um erro..
Para usar GROUP BY eu tenho q especificar todos os campos, naum posso usar SELECT * .. entaum fui até o Access e fiz a seguinte consulta..
que funcionou perfeitamente sem a expressão GROUP BY
SELECT Orcamentos.Orcamento, Orcamentos.Cod_Cliente, Orcamentos.Valor_Total, Orcamentos.Data_Emissao, Orcamentos.Vendedor, Orcamentos.Desconto, F_Pagto.Cod_Orcamento, F_Pagto.Vencimento, F_Pagto.Valor, F_Pagto.Data_Receb, F_Pagto.Obs, F_Pagto.Parcela, F_Pagto.Total_Pago, Cheques.Cheque, Cheques.Banco, Cheques.Valor FROM (Orcamentos INNER JOIN F_Pagto ON Orcamentos.Orcamento = F_Pagto.Cod_Orcamento) LEFT JOIN Cheques ON F_Pagto.Codigo = Cheques.Cod_F_Pagto GROUP BY Orcamentos.Cod_Cliente ORDER BY F_Pagto.Vencimento;
Erro:
Você tentou executar uma consulta que não inclui a expressão ´Orcamento´ especificada como parte de uma função agregada.
Aí eu removo esse campo da consulta, o campo Orcamentos.Orcamento .. e dá o mesmo erro e fala q é outro campo aí vou tirando.. tirando.. e naum fica praticamente nenhum dos campos q eu preciso...
Como eu faço pra resolver isso?[code:1:7d51d083da][/code:1:7d51d083da]
Caiosoft
Curtir tópico
+ 0Posts
14/02/2007
Acacio
Exemplo ´select codcliente,valorfatura,dataCad, count(codcliente)
from movimento
group by codcliente,valorfatura,dataCad´
ou seja todos os outros campos que não for o count tem que ir no group by. Agora sobre o relatório, imprimir por grupo o relatório já tem essa opção, procure por uma propriedade group e selecione o grupo que queres.
Gostei + 0
14/02/2007
Caiosoft
Aí c eu ordeno por datas de Vencimento... os grupos ficam errados... aparece mais de uma vez o mesmo Cliente em Grupos diferentes.... naum aparecem outros....
Oq vc acha q pode ser?
Obrigado
Gostei + 0
14/02/2007
Caiosoft
Obrigado
Gostei + 0
14/02/2007
Sremulador
Gostei + 0
14/02/2007
Caiosoft
Até a próxima!! :D
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)