CAMPOS FORA DO GROUP BY
27/03/2013
0
Ola a todos
Uso FireBird 2.0 e Delphi 7 + clientdataset , estou tendo um problema em nao conseguir exibir campos que estao fora da condicao do GROUP BY , tipo agrupo 2 campos para poder somar os valores , mas tenho que informar outros 2 campos que nao podem ser agurpados junto.
Ja procurei a nao achei nada para me basear e criar o q presciso .
Ha detalhe uso 3 tabelas para isso
Vou tentar explicar
tabela 1 - dados do cliente
tabela 2 - vendas
tabela 3 - itens da venda
presciso do cnpj, ie, e uf do cliente que busco pelo idcliente com o inner join
presciso da data da venda que pego na tabela 1
presciso agrupar na tabela 3 o CFOP e ALIQICMS , para somar os valores base de calculo de cada item .
isso tudo para gerar o REGISTRO50 do sintegra.
presciso comecar por uma para fazer os outros , ate tenho mas minha sql esta dando muito erro nos valores e acho que deve ser por eu agrupar por todos os campos .
espero ter explicado direito .
abaixo a SQL que estou usando
CommandText:='SELECT NF_SAIDA.NUM_NF, NF_SAIDA.SERIE_NF, NF_SAIDA.MODELO_NF,NF_SAIDA.SITUACAO_NF, ' +
'CLIENTES_CAD.CNPJ,CLIENTES_CAD.ICMS, NF_SAIDA.DATAHORA_EMISSAO, '+
'NF_SAIDA_itens.CFOP,NF_SAIDA_itens.ALIQ_ICMS, CLIENTEs_cad.uf, SUM(NF_SAIDA_itens.QTDE * NF_SAIDA_itens.VLUND) TOTAL_BASE_ICMS, '+ ////NF_SAIDA_itens.BASE_ICMS
'SUM( NF_SAIDA_itens.BASE_ICMS_ST) TOTAL_BASE_ICMSST, '+
'SUM( NF_SAIDA_itens.VLICMS) TOTAL_ICMS, '+
'SUM( NF_SAIDA_itens.VLST) TOTAL_ICMSST, '+
'SUM(NF_SAIDA_itens.QTDE*NF_SAIDA_itens.VLUND) TOTALPRODUTO '+
'FROM NF_SAIDA '+
'LEFT OUTER JOIN NF_SAIDA_itens ON (NF_SAIDA_itens.num_nf = NF_SAIDA.num_nf) '+
'LEFT OUTER JOIN CLIENTES_CAD ON (NF_SAIDA.COD_CLI_destinatario = CLIENTES_CAD.id_codigo) '+
'WHERE (NF_SAIDA.DATAHORA_EMISSAO BETWEEN :dtini and :dtfim) '+
'GROUP BY NF_SAIDA.NUM_NF, NF_SAIDA.SERIE_NF, NF_SAIDA.MODELO_NF,NF_SAIDA.SITUACAO_NF, '+
'CLIENTES_CAD.CNPJ, CLIENTES_CAD.ICMS, CLIENTEs_cad.uf, NF_SAIDA.DATAHORA_EMISSAO,NF_SAIDA_itens.CFOP,NF_SAIDA_itens.ALIQ_ICMS '+
'order by nf_saida.num_nf';
Params.ParamByName('dtini').AsDate:=DT_Inicial.Date;
Params.ParamByName('dtfim').AsDate:=DT_Final.Date;
open;
obrigado desde ja.
Att
Paulo
Uso FireBird 2.0 e Delphi 7 + clientdataset , estou tendo um problema em nao conseguir exibir campos que estao fora da condicao do GROUP BY , tipo agrupo 2 campos para poder somar os valores , mas tenho que informar outros 2 campos que nao podem ser agurpados junto.
Ja procurei a nao achei nada para me basear e criar o q presciso .
Ha detalhe uso 3 tabelas para isso
Vou tentar explicar
tabela 1 - dados do cliente
tabela 2 - vendas
tabela 3 - itens da venda
presciso do cnpj, ie, e uf do cliente que busco pelo idcliente com o inner join
presciso da data da venda que pego na tabela 1
presciso agrupar na tabela 3 o CFOP e ALIQICMS , para somar os valores base de calculo de cada item .
isso tudo para gerar o REGISTRO50 do sintegra.
presciso comecar por uma para fazer os outros , ate tenho mas minha sql esta dando muito erro nos valores e acho que deve ser por eu agrupar por todos os campos .
espero ter explicado direito .
abaixo a SQL que estou usando
CommandText:='SELECT NF_SAIDA.NUM_NF, NF_SAIDA.SERIE_NF, NF_SAIDA.MODELO_NF,NF_SAIDA.SITUACAO_NF, ' +
'CLIENTES_CAD.CNPJ,CLIENTES_CAD.ICMS, NF_SAIDA.DATAHORA_EMISSAO, '+
'NF_SAIDA_itens.CFOP,NF_SAIDA_itens.ALIQ_ICMS, CLIENTEs_cad.uf, SUM(NF_SAIDA_itens.QTDE * NF_SAIDA_itens.VLUND) TOTAL_BASE_ICMS, '+ ////NF_SAIDA_itens.BASE_ICMS
'SUM( NF_SAIDA_itens.BASE_ICMS_ST) TOTAL_BASE_ICMSST, '+
'SUM( NF_SAIDA_itens.VLICMS) TOTAL_ICMS, '+
'SUM( NF_SAIDA_itens.VLST) TOTAL_ICMSST, '+
'SUM(NF_SAIDA_itens.QTDE*NF_SAIDA_itens.VLUND) TOTALPRODUTO '+
'FROM NF_SAIDA '+
'LEFT OUTER JOIN NF_SAIDA_itens ON (NF_SAIDA_itens.num_nf = NF_SAIDA.num_nf) '+
'LEFT OUTER JOIN CLIENTES_CAD ON (NF_SAIDA.COD_CLI_destinatario = CLIENTES_CAD.id_codigo) '+
'WHERE (NF_SAIDA.DATAHORA_EMISSAO BETWEEN :dtini and :dtfim) '+
'GROUP BY NF_SAIDA.NUM_NF, NF_SAIDA.SERIE_NF, NF_SAIDA.MODELO_NF,NF_SAIDA.SITUACAO_NF, '+
'CLIENTES_CAD.CNPJ, CLIENTES_CAD.ICMS, CLIENTEs_cad.uf, NF_SAIDA.DATAHORA_EMISSAO,NF_SAIDA_itens.CFOP,NF_SAIDA_itens.ALIQ_ICMS '+
'order by nf_saida.num_nf';
Params.ParamByName('dtini').AsDate:=DT_Inicial.Date;
Params.ParamByName('dtfim').AsDate:=DT_Final.Date;
open;
obrigado desde ja.
Att
Paulo
Paulo Pattarelli
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)