Jump to content

rodrigoords

Members
  • Content count

    12
  • Joined

  • Last visited

Community Reputation

1 Comum

About rodrigoords

  1. rodrigoords

    Select com sum e inner join

    Olá Você pode usar função analítica para realizar a soma dentro da tabela baixa_imposto, agrupando o valor separadamente, a diferença é que o valor irá se repetir para cada linhas dentro da ICMS. http://docs.oracle.com/database/121/SQLRF/functions196.htm#SQLRF06115 Da uma olhada.
  2. rodrigoords

    Subquery

    Você pode tentar criar um subselect que traga somente as notas filtradas pela data, e fazer o left com o restante da query.
  3. rodrigoords

    Subquery

    Olá, você pode fazer algo como: select * from clientes cli left join notaFiscal nf on (nf.idcli = cli.cod_cli and nf.data between '21/01/2015' and '23/01/2015') Acho que seu codigo deve funcionar da seguinte forma : SELECT e085cli.codgre AS Grupo_Empresa, e085cli.codcli AS Codigo_Empresa, e085cli.nomcli AS Razao_social, e085cli.apecli AS Nome_fantasia, e085cli.usu_siterevofi AS Site, e085cli.usu_foracap AS Fora_da_Capital, e085cli.usu_servico Oferece_Servico, e085cli.usu_fachada AS Tem_Fachada, e085cli.usu_cartafian AS Carta_de_Fianca, Sum(e140ipv.qtdfat * e075pro.usu_ponfidel) AS pontos, e085cli.usu_crepon, e085hcl.catcli, e085cli.usu_pontgru, MAX(e085cli.usu_siterevofi) OVER (PARTITION BY e085cli.codgre) AS pontos_tem_site, MAX(e085cli.usu_foracap) OVER (PARTITION BY e085cli.codgre) AS pontos_fora_capital, MAX(e085cli.usu_servico) OVER (PARTITION BY e085cli.codgre) AS pontos_oferece_servico, MAX(e085cli.usu_fachada) OVER (PARTITION BY e085cli.codgre) AS pontos_tem_fachada, MAX(e085cli.usu_cartafian) OVER (PARTITION BY e085cli.codgre) AS pontos_carta_fianca, LAG (e085cli.codgre, 1, 0) OVER (ORDER BY e085cli.codgre desc) AS grupo_anterior, LEAD(e085cli.codgre, 1, 0) OVER (ORDER BY e085cli.codgre desc) AS proximo_grupo, e085cli.sigufs, e069gre.nomgre FROM e085cli e085cli JOIN e069gre e069gre ON ( e085cli.codgre = e069gre.codgre ) LEFT JOIN e140nfv e140nfv ON ( e085cli.codcli = e140nfv.codcli and e140nfv.datemi BETWEEN To_date('01/12/2014', 'DD/MM/YYYY') and To_date('31/01/2015', 'DD/MM/YYYY') ) JOIN e085hcl e085hcl ON ( e085hcl.codcli = e140nfv.codcli AND e085hcl.codemp = e140nfv.codemp AND e085hcl.codfil = e140nfv.codfil ) JOIN e140ipv e140ipv ON ( e140nfv.codemp = e140ipv.codemp AND e140nfv.numnfv = e140ipv.numnfv AND e140nfv.codsnf = e140ipv.codsnf ) JOIN e140ide e140ide ON ( e140ide.codemp = e140ipv.codemp AND e140ide.numnfv = e140ipv.numnfv AND e140ide.codsnf = e140ipv.codsnf ) JOIN e075pro e075pro ON ( e075pro.codemp = e140ipv.codemp AND e075pro.codpro = e140ipv.codpro ) WHERE e085cli.codgre = 71 GROUP BY e085cli.codgre, e085cli.codcli, e085cli.nomcli, e085cli.apecli, e085cli.usu_siterevofi, e085cli.usu_foracap, e085cli.usu_servico, e085cli.usu_fachada, e085cli.usu_cartafian, e085cli.usu_crepon, e085hcl.catcli, e085cli.usu_pontgru, e085cli.sigufs, e069gre.nomgre ORDER BY e085cli.codgre desc, e085cli.usu_siterevofi DESC, e085cli.usu_foracap DESC, e085cli.usu_servico DESC, e085cli.usu_fachada DESC, e085cli.usu_cartafian DESC
  4. rodrigoords

    calcular períodos no select.

    Olá, Realmente o seu código precisa muito de um refactoring, mas talvez para revolver o seu problema de forma mais rápida, utilize uma view em cima desse select realizando o calculo das datas que você precisa, acho mais limpo do que criar um outro subselect dentro desse SQL. Mas reescreva esse select, pois dar manutenção a ele me parece algo insano.
  5. rodrigoords

    If ou Case

    Realmente está complicado de entender o problema, vamos lá! Você quer que quando o cliente fizer um pedido que a marca seja 379, mostre para você Grendene, e se o mesmo cliente fizer um outro pedido que não seja a marca 379, ainda assim tem que aparecer Grendene somente, pois ele já comprou anteriormente. Porém se o cliente nunca comprou a marca 379 então mestre 'Não compra Grendene'. Seria isso ?
  6. rodrigoords

    If ou Case

    (Case when g.seqmarca = 379 then 'Grendene' else 'Não compra Grendene' end ) as Marca,p.atividade
  7. rodrigoords

    Update Cabuloso!

    Olá, sei que já está resolvido... mais segue a dica de como você poderia ter feito. Update tabela_X set comando = 'Y' where turno = (case when to_char(sysdate, 'hh24:mi') between '01:00' and '08:00' then 1 when to_char(sysdate, 'hh24:mi') between '08:00' and '17:00' then 2 when to_char(sysdate, 'hh24:mi') between '17:00' and '01:00' then 3 end)
  8. rodrigoords

    Comparar registros entre 2 tabelas

    Você pode utilizar o Not in ou até mesmo o Exists select cor from tt where not exists (select cor from tt2 where tt.cor = tt2.cor)
  9. rodrigoords

    Saber a quantidade de registros dentro de um for cursor

    Olá, Talvez eu não tenha entendido muito bem, mais pelo que eu entendi um count() possa te ajudar. select count(*) from Begin contador number(6) := select count(*) from tabela; For r in (select * from tabela) Loop ..... ; End loop; End; ou talvez, dependendo do que você for fazer o SQL%ROWCOUNT possa te ajudar, ele é um cursor implícito do Oracle que retorna a quantidade de linhas afetadas pelo comando anterior. Espero ter ajudado.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.