Consulta SQL. Problema com GROUP BY
E aí pessoal. td bem?
É 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:
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
Erro:
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]
É 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
Curtidas 0
Respostas
Acacio
13/02/2007
A propriedade group by é usado quando você quer agrupar pro grupo e fazer uma soma ou algo assim para aquele grupo, mas todos os outros campos tem que aparecer no group by.
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.
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
Caiosoft
13/02/2007
Opa!! Valew mesmo! Mas o problema é que naum consigo agrupar no Rave!!! eu sei agrupar... já fiz outros.. porém esse naum consegui!! O único jeito q dá certo de Agrupar por Cliente é eu ordenar por Cliente (ORDER BY COD_CLIENTE) aí fuciona!!! porém, as datas de Vencimento ficam todas foras de ordem...
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
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
Caiosoft
13/02/2007
Teria como eu entaum ORDENAR pelos dois campos??? isso resolveria... como q eu faria isso???
Obrigado
Obrigado
GOSTEI 0
Sremulador
13/02/2007
order by campo1[b:5c8d768c95], [/b:5c8d768c95]campo2...
GOSTEI 0
Caiosoft
13/02/2007
Ficou perfeito! Muito obrigado pela atenção!!
Até a próxima!! :D
Até a próxima!! :D
GOSTEI 0