Como não retornar 2 campos iguais

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
ruzivao
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 26 Fev 2009 9:17 am
Localização: Santa Fé do Sul - SP

Bom dia galera....

Tenho que pegar no meu sql o campo valor_total, mas quando esse valor_total tive outro campo diferente ele não me traga o segundo valor do agrupamento. ex:

Selecionar tudo

ID     valor_total     alicota
1      100,00          12
1      100,00          18
Como o id é igual... o valor total tb... apenas a alicota não... quero que no segundo valor total ele me traga em branco... como faço?

Obrigado desde já....
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Posta pra gente aqui o select que você está usando, por favor?

Deixa eu ver se entendi, você precisa retornar as duas linhas do agrupamento, com id iguais, com valor_total iguais, e se o valor da alicota for diferente, ele traz o valor do primeiro e para as demais linhas ele traga em branco, é isso?

.
ruzivao
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 26 Fev 2009 9:17 am
Localização: Santa Fé do Sul - SP

Boa tarde Matheus...

É isso mesmo, como você respondeu pra mim, fiz um teste aqui usei o case conforme abaixo:

select t.data_emissao
, t.serie
, t.nota_saida
, c.razao_social
, c.cgc
, c.inscricao_estadual
, c.uf
, case ts.aliquota when (select max(tss.aliquota)
from sigma_fis.tributacao_saida tss
where tss.sequencial_nota_saida = ts.sequencial_nota_saida) then t.valor_total
else null
end valor_total
, substr(ts.codigo_natureza_operacao,1,4)
, sum(ts.base_calculo)
, ts.aliquota
, sum(ts.imposto_debitado)
, ts.codigo_tipo_imposto
, ts.codigo_tipo_tributacao
, :empresa p_codigo_empresa
, (select em.razao_social from sigma_fis.empresa em where em.codigo_empresa = :empresa) p_desc_empresa
, :data_ini p_data_inicial
, :data_fim p_data_final
, user

from sigma_mat.nota_saida t
, sigma_fin.cliente c
, sigma_fis.tributacao_saida ts
where (t.codigo_cliente = c.codigo_cliente
and t.sequencial_nota_saida = ts.sequencial_nota_saida
and t.codigo_empresa = :empresa
and t.data_emissao between :data_ini and :data_fim
and t.situacao <> 'C'
and ts.codigo_tipo_imposto = 1
and ts.aliquota = 0
and not exists (select 1 from sigma_mat.nota_saida ns
, sigma_fis.tributacao_saida ts
where ns.sequencial_nota_saida = ts.sequencial_nota_saida
and ts.codigo_tipo_imposto = 1
and ts.codigo_tipo_tributacao = 1
and ts.aliquota <> 0
and ns.situacao <> 'C'
and ns.sequencial_nota_saida = t.sequencial_nota_saida
))
or
(t.codigo_cliente = c.codigo_cliente
and t.codigo_empresa = :empresa
and t.data_emissao between :data_ini and :data_fim
and t.sequencial_nota_saida = ts.sequencial_nota_saida
and ts.codigo_tipo_imposto = 1
and ts.codigo_tipo_tributacao = 1
and t.situacao <> 'C'
and ts.aliquota <> 0)

group by t.data_emissao
, t.serie
, t.nota_saida
, c.razao_social
, c.cgc
, c.inscricao_estadual
, c.uf
, t.valor_total
, substr(ts.codigo_natureza_operacao,1,4)
, ts.aliquota
, ts.codigo_tipo_imposto
, ts.codigo_tipo_tributacao
, ts.sequencial_nota_saida


order by nota_saida, aliquota desc
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Só postando usando a tag CODE pra ficar mais fácil de entender:

Selecionar tudo

select t.data_emissao 
	, t.serie 
	, t.nota_saida 
	, c.razao_social 
	, c.cgc 
	, c.inscricao_estadual 
	, c.uf 
	, case ts.aliquota when (select max(tss.aliquota) 
                                 from sigma_fis.tributacao_saida tss 
                                 where tss.sequencial_nota_saida = ts.sequencial_nota_saida) 
                           then t.valor_total 
                           else null end valor_total 
	, substr(ts.codigo_natureza_operacao,1,4) 
	, sum(ts.base_calculo) 
	, ts.aliquota 
	, sum(ts.imposto_debitado) 
	, ts.codigo_tipo_imposto 
	, ts.codigo_tipo_tributacao 
	, :empresa p_codigo_empresa 
	, (select em.razao_social from sigma_fis.empresa em where em.codigo_empresa = :empresa) p_desc_empresa 
	, :data_ini p_data_inicial 
	, :data_fim p_data_final 
	, user 

 from sigma_mat.nota_saida t 
    , sigma_fin.cliente c 
    , sigma_fis.tributacao_saida ts 

 where (     t.codigo_cliente = c.codigo_cliente 
         and t.sequencial_nota_saida = ts.sequencial_nota_saida 
         and t.codigo_empresa = :empresa 
         and t.data_emissao between :data_ini and :data_fim 
         and t.situacao <> 'C' 
         and ts.codigo_tipo_imposto = 1 
         and ts.aliquota = 0 
         and not exists (select 1 from sigma_mat.nota_saida ns 
                                     , sigma_fis.tributacao_saida ts 
                          where ns.sequencial_nota_saida = ts.sequencial_nota_saida 
                            and ts.codigo_tipo_imposto = 1 
                            and ts.codigo_tipo_tributacao = 1 
                            and ts.aliquota <> 0 
                            and ns.situacao <> 'C' 
                            and ns.sequencial_nota_saida = t.sequencial_nota_saida 
      	                )
        ) 
    or 
	(     t.codigo_cliente = c.codigo_cliente 
	  and t.codigo_empresa = :empresa 
	  and t.data_emissao between :data_ini and :data_fim 
	  and t.sequencial_nota_saida = ts.sequencial_nota_saida 
	  and ts.codigo_tipo_imposto = 1 
	  and ts.codigo_tipo_tributacao = 1 
	  and t.situacao <> 'C' 
	  and ts.aliquota <> 0
	) 

 group by t.data_emissao 
	, t.serie 
	, t.nota_saida 
	, c.razao_social 
	, c.cgc 
	, c.inscricao_estadual 
	, c.uf 
	, t.valor_total 
	, substr(ts.codigo_natureza_operacao,1,4) 
	, ts.aliquota 
	, ts.codigo_tipo_imposto 
	, ts.codigo_tipo_tributacao 
	, ts.sequencial_nota_saida 

order by nota_saida, aliquota desc 
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes