Ir para conteúdo

Rods2018

Members
  • Total de itens

    22
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre Rods2018

  1. vlw usei o in e resolveu
  2. boaaaa eu consegui entendi o que estava fazendo de errado ficou assim cheguei a fazer com o union entendi o conceito dele pelo menos e como usar nas proximas vezes... select names.A1_COD,names.A1_NOME,names.A1_VEND,produtos.ULTCOMP_CLIENTE,produtos.B1_COD,produtos.B1_DESC,produtos.B2_QATU,produtos.B2_CM1,produtos.B2_VFIM1,produtos.B2_VATU1,teste.D2_QUANT,teste.D2_PRCVEN,produtos.ULTCOMP_PRODUTO from (select distinct D2_COD,D2_CLIENTE,D2_QUANT,D2_EMISSAO,D2_PRCVEN from SD2010 group by D2_COD,D2_CLIENTE,D2_QUANT,D2_EMISSAO,D2_PRCVEN) as teste, (select A1_COD,A1_NOME,A1_VEND from SA1010 group by A1_COD,A1_NOME,A1_VEND) as names, (select A1_COD,A1_ULTCOM as ULTCOMP_CLIENTE,B1_COD,B1_DESC,B2_QATU,B2_CM1,B2_VFIM1,B2_VATU1,max(D2_EMISSAO) as ULTCOMP_PRODUTO from SB1010 SB1 inner join SD2010 SD2 on D2_COD = B1_COD inner join SB2010 SB2 on B2_COD = B1_COD inner join SA1010 SA1 on A1_COD = D2_CLIENTE where B2_QATU > 0 and (D2_EMISSAO between dateadd(mm,-8,getdate()) and dateadd(mm,-2,getdate()) and SA1.D_E_L_E_T_ <> '*' and (SB1.D_E_L_E_T_ <> '*' and SB2.D_E_L_E_T_ <> '*' and (SD2.D_E_L_E_T_ <> '*' and B1_TIPO = 'ME' and (B1_COD not in( select distinct D2_COD from SD2010 where D2_FILIAL = 01 and (D2_EMISSAO between dateadd(mm,-2,getdate()) and getdate() and D2_TIPO = 'N')))))) group by A1_COD,A1_ULTCOM,B1_COD,B1_DESC,B2_QATU,B2_CM1,B2_VFIM1,B2_VATU1) as produtos where names.A1_COD = produtos.A1_COD and teste.D2_COD = produtos.B1_COD and teste.D2_CLIENTE = produtos.A1_COD and teste.D2_EMISSAO = produtos.ULTCOMP_PRODUTO and B1_COD in(select top 1 B1_COD from SB1010 SB1 inner join SD2010 SD2 on D2_COD = B1_COD inner join SB2010 SB2 on B2_COD = B1_COD inner join SA1010 SA1 on A1_COD = D2_CLIENTE where B2_QATU > 0 and D2_EMISSAO between dateadd(mm,-8,getdate()) and dateadd(mm,-2,getdate()) and (SB1.D_E_L_E_T_ <> '*' and SA1.D_E_L_E_T_ <> '*' and (SB1.D_E_L_E_T_ <> '*' and SB2.D_E_L_E_T_ <> '*' and (SD2.D_E_L_E_T_ <> '*'and B1_TIPO = 'ME' and (B1_COD not in( select distinct D2_COD from SD2010 where D2_FILIAL = 01 and (D2_EMISSAO between dateadd(mm,-2,getdate()) and getdate() and D2_TIPO = 'N')))))))
  3. Olá A.jr nao conheço muito o union tentei faze-lo mas não consegui teria como mostrar algum exemplo?
  4. Olá meus caros queria retornar os produtos que forem iguais a de um select mas ao fazer isso ele retorna vazio a query... select top 10 names.A1_COD, names.A1_NOME, names.A1_VEND, produtos.ULTCOMP_CLIENTE, produtos.B1_COD, produtos.B1_DESC, produtos.B2_QATU, produtos.B2_CM1, produtos.B2_VFIM1, produtos.B2_VATU1, teste.D2_QUANT, teste.D2_PRCVEN, produtos.ULTCOMP_PRODUTO from (select distinct D2_COD, D2_CLIENTE, D2_QUANT, D2_EMISSAO, D2_PRCVEN from SD2010 group by D2_COD, D2_CLIENTE, D2_QUANT, D2_EMISSAO, D2_PRCVEN) as teste, (select A1_COD, A1_NOME, A1_VEND from SA1010 group by A1_COD, A1_NOME, A1_VEND) as names, (select A1_COD, A1_ULTCOM as ULTCOMP_CLIENTE, B1_COD, B1_DESC, B2_QATU, B2_CM1, B2_VFIM1, B2_VATU1, max(D2_EMISSAO) as ULTCOMP_PRODUTO from SB1010 SB1 inner join SD2010 SD2 on D2_COD = B1_COD inner join SB2010 SB2 on B2_COD = B1_COD inner join SA1010 SA1 on A1_COD = D2_CLIENTE where B2_QATU > 0 and (D2_EMISSAO between dateadd(mm,-8,getdate()) and dateadd(mm,-2,getdate()) and SA1.D_E_L_E_T_ <> '*' and (SB1.D_E_L_E_T_ <> '*' and SB2.D_E_L_E_T_ <> '*' and (SD2.D_E_L_E_T_ <> '*' and B1_TIPO = 'ME' and (B1_COD not in( select distinct D2_COD from SD2010 where D2_FILIAL = 01 and (D2_EMISSAO between dateadd(mm,-2,getdate()) and getdate() and D2_TIPO = 'N')))))) group by A1_COD, A1_ULTCOM, B1_COD, B1_DESC, B2_QATU, B2_CM1, B2_VFIM1, B2_VATU1) as produtos where names.A1_COD = produtos.A1_COD and teste.D2_COD = produtos.B1_COD and( teste.D2_CLIENTE = produtos.A1_COD and teste.D2_EMISSAO = produtos.ULTCOMP_PRODUTO) order by produtos.ULTCOMP_PRODUTO desc; No where queria colocar um select que retorna apenas um B1_COD ae ele compara se é igual ao do select principal, assim retornando somente este produto. Resultado:
  5. Rods2018

    Retornar soma de produtos por cliente

    consegui chegar no resultado que queria antes mas quando coloco o campo D2_QUANT e o D2_PRCVEN os resultados do count se alteram por que esses campos retornam muitos valores distintos select produtos.NUMBER, names.A1_COD, names.A1_NOME, names.A1_VEND, produtos.ULTCOMP_CLIENTE, produtos.B1_COD, produtos.TOTAL_VEZES, produtos.B1_DESC, produtos.B2_QATU, produtos.B2_CM1, produtos.B2_VFIM1, produtos.B2_VATU1, produtos.ULTCOMP_PRODUTO_CLIENTE, produtos.TOTAL_MESES from (select A1_COD, A1_NOME, A1_VEND from SA1010 group by A1_COD, A1_NOME, A1_VEND) as names, (select row_number() over(order by A1_COD) as NUMBER, A1_COD, A1_ULTCOM as ULTCOMP_CLIENTE, B1_COD, B1_DESC, B2_QATU, B2_CM1, B2_VFIM1, B2_VATU1, count(B1_COD) as TOTAL_VEZES, max(D2_EMISSAO) as ULTCOMP_PRODUTO_CLIENTE, datediff(mm,max(D2_EMISSAO),getdate()) as TOTAL_MESES from SB1010 SB1 inner join SD2010 SD2 on D2_COD = B1_COD inner join SB2010 SB2 on B2_COD = B1_COD inner join SA1010 SA1 on A1_COD = D2_CLIENTE where B2_QATU > 0 and (D2_EMISSAO between dateadd(yyyy,-8,getdate()) and dateadd(mm,-2,getdate()) and SA1.D_E_L_E_T_ <> '*' and (SB1.D_E_L_E_T_ <> '*' and SB2.D_E_L_E_T_ <> '*' and (SD2.D_E_L_E_T_ <> '*' and B1_TIPO = 'ME' and (B1_COD not in( select distinct D2_COD from SD2010 where D2_FILIAL = 01 and (D2_EMISSAO between dateadd(mm,-2,getdate()) and getdate() and D2_TIPO = 'N')))))) group by A1_COD, A1_ULTCOM, B1_COD, B1_DESC, B2_QATU, B2_CM1, B2_VFIM1, B2_VATU1) as produtos where names.A1_COD = produtos.A1_COD order by 2 desc esta query retorna isto...
  6. Rods2018

    Retornar soma de produtos por cliente

    sim é só trazer de uma tabela os dois campos mas so to com um problema que por causa do group by ou quando faço uma subquery pra retoranar estes valores os valores do count se alteram...
  7. Rods2018

    Retornar soma de produtos por cliente

    consegui chegar no resultado falta so acrescentar duas colunas...
  8. Rods2018

    Retornar soma de produtos por cliente

    ta aqui select row_number() over(order by A1_COD) as NUMBER, produtos.TOTAL, p.A1_COD, p.A1_NOME, p.A1_VEND, p.ULTCOMP_CLIENTE, p.B1_COD, p.B1_DESC, p.B2_QATU, p.B2_CM1, p.B2_VFIM1, p.B2_VATU1, p.D2_PRCVEN, p.D2_QUANT, p.ULTCOMP_PRODUTO_CLIENTE, p.TOTAL_MESES from SD2010, (select B1_COD, count(B1_COD) over(order by B1_COD) as TOTAL from SB1010 group by B1_COD) as produtos, (select A1_COD, A1_NOME, A1_VEND, A1_ULTCOM as ULTCOMP_CLIENTE, B1_COD, B1_DESC, B2_QATU, B2_CM1, B2_VFIM1, B2_VATU1, D2_PRCVEN, D2_QUANT, max(D2_EMISSAO) as ULTCOMP_PRODUTO_CLIENTE, datediff(mm,max(D2_EMISSAO),getdate()) as TOTAL_MESES from SB1010 as SB1 inner join SD2010 SD2 on D2_COD = B1_COD inner join SB2010 SB2 on B2_COD = B1_COD inner join SA1010 SA1 on A1_COD = D2_CLIENTE where B2_QATU > 0 and (SA1.D_E_L_E_T_ <> '*' and SB1.D_E_L_E_T_ <> '*' and (SB2.D_E_L_E_T_ <> '*' and SD2.D_E_L_E_T_ <> '*' and (B1_TIPO = 'ME' and B1_COD not in (select distinct D2_COD from SD2010 where D2_FILIAL = 01 and (D2_EMISSAO between dateadd(mm,-2,getdate()) and getdate() and D2_TIPO = 'N'))))) group by A1_COD, A1_NOME, A1_VEND, A1_ULTCOM, B1_COD, B1_DESC, B2_QATU, B2_CM1, B2_VFIM1, B2_VATU1, D2_QUANT, D2_PRCVEN) as p where p.ULTCOMP_PRODUTO_CLIENTE between dateadd(yyyy,-8,getdate()) and dateadd(mm,-2,getdate()) and p.B1_COD = produtos.B1_COD group by p.ULTCOMP_PRODUTO_CLIENTE, p.TOTAL_MESES, p.A1_COD, produtos.TOTAL, p.A1_NOME, p.A1_VEND, p.ULTCOMP_CLIENTE, p.B1_COD, p.B1_DESC, p.B2_QATU, p.B2_CM1, p.B2_VFIM1, p.B2_VATU1, p.D2_PRCVEN, p.D2_QUANT order by 3,7 desc;
  9. Rods2018

    Retornar soma de produtos por cliente

    isso motta juntei o que voce disse o over com a subquery do kim e retornou isso... o TOTAL não bate...
  10. Rods2018

    Retornar soma de produtos por cliente

    Entao consegui implementar, mas olha oq acontece sem o group by a query retorna isso.. Fica executando e nao para,e retorna só um cliente com o group by.. retorna certinho porem so falta agora somar a coluna total..
  11. Rods2018

    Retornar soma de produtos por cliente

    blz kim acho que ja deu uma luz, vlw qualquer coisa volto aqui de novo... Consegui colocar mas agora vou ter que fazer umas condições dentro desta subquery
  12. Rods2018

    Retornar soma de produtos por cliente

    o que a query retorna OBS: Tem mais linhas mas peguei este cliente como exemplo continuação do resultado acima.. o que eu quero... OBS: So que em vez de aparecer 1 no total queria que quando o produto x = a este codigo do produto ele verificasse quantos clientes compraram este produto no geral, somando no campo total a quantidade de clientes... espero ter conseguido esclarecer.
  13. Rods2018

    Retornar soma de produtos por cliente

    ta aqui a query... select row_number() over(order by A1_COD) as NUMBER, p.A1_COD,p.A1_NOME,p.A1_VEND,p.ULTCOMP_CLIENTE, p.TOTAL, p.B1_COD, p.B1_DESC, p.B2_QATU, p.B2_CM1, p.B2_VFIM1, p.B2_VATU1, p.D2_PRCVEN, p.D2_QUANT, p.ULTCOMP_PRODUTO_CLIENTE, p.TOTAL_MESES from SD2010, (select A1_COD, A1_NOME, A1_VEND, A1_ULTCOM as ULTCOMP_CLIENTE, count(B1_COD) as TOTAL, B1_COD, B1_DESC, B2_QATU, B2_CM1, B2_VFIM1, B2_VATU1, D2_PRCVEN, D2_QUANT,max(D2_EMISSAO) as ULTCOMP_PRODUTO_CLIENTE, datediff(mm,max(D2_EMISSAO),getdate()) as TOTAL_MESES from SB1010 as SB1 inner join SD2010 SD2 on D2_COD = B1_COD inner join SB2010 SB2 on B2_COD = B1_COD inner join SA1010 SA1 on A1_COD = D2_CLIENTE where B2_QATU > 0 and (SA1.D_E_L_E_T_ <> '*' and SB1.D_E_L_E_T_ <> '*' and (SB2.D_E_L_E_T_ <> '*' and SD2.D_E_L_E_T_ <> '*' and (B1_TIPO = 'ME' and B1_COD not in ( select distinct D2_COD from SD2010 where D2_FILIAL = 01 and (D2_EMISSAO between dateadd(mm,-2,getdate()) and getdate() and D2_TIPO = 'N'))))) group by A1_COD, A1_NOME, A1_VEND, A1_ULTCOM, B1_COD,B1_DESC, B2_QATU,B2_CM1, B2_VFIM1, B2_VATU1, D2_QUANT, D2_PRCVEN) as p where p.ULTCOMP_PRODUTO_CLIENTE between dateadd(yyyy,-8,getdate()) and dateadd(mm,-2,getdate()) group by p.ULTCOMP_PRODUTO_CLIENTE, p.TOTAL_MESES, p.TOTAL, p.A1_COD, p.A1_NOME, p.A1_VEND, p.ULTCOMP_CLIENTE, p.B1_COD, p.B1_DESC, p.B2_QATU, p.B2_CM1, p.B2_VFIM1, p.B2_VATU1, p.D2_PRCVEN, p.D2_QUANT order by 2,6 desc;
  14. Rods2018

    Retornar soma de produtos por cliente

    é que pra mim eu acho mais facil assim mais blz vou identar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.