Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme bmp

Select com varias colunas... mas uma delas com restri

Recommended Posts

Olá...

 

seguinte, tem a seguinte SQL num programa em delphi (EDIT: USANDO INTERBASE 6 QUE NAO ACEITA CASE)... tirei outros comandos, vou por soh a sql pura:

 

Select D.VlrTot as VlrTot2, D.DescOrc, B.CodPrf,B.NomPrf,D.CodOrc,E.NomCli,D.DatOrc,D.DatApr,B.Percom,Sum(F.VlrPrc) as VlrTot, sum(F.VlrTabela) as ValorReceber
	  FROM WorkProfissional A, Profissional B,
	  Orcamento D, Cliente E, ItemOrc F
	  WHERE A.CodPrf = B.CodPrf
	  AND   A.CodPrf = D.CodPrf
	  AND   D.CodCli = E.CodCli
	  AND   F.CodOrc = D.CodOrc
	  AND   F.OrcNovo = 1
	  AND   (D.DatApr <= 16-10-2008 AND   D.DatApr >= 16-09-2008) OR (F.DatEst <= 16-10-2008 AND F.DatEst >= 16-09-2008)
	  group by D.VlrTot, D.DescOrc, B.CodPrf,B.NomPrf,D.CodOrc,E.NomCli,D.DatOrc,D.DatApr,B.Percom
	  ORDER BY B.CodPrf, D.CodOrc;

Blza... agora é o seguinte.. estão vento a coluna "Sum(F.VlrPrc) as VlrTot" ????

eu quero acrescentar mais uma coluna que seria a mesma soma:

"Sum(F.VlrPrc) as VlrTot2"

 

só que nesta segunda soma, eu gostaria de acrescentar a seguinte restricao:

F.CodPrc != 301 AND F.CodPrc != 302 AND F.CodPrc != 305

eu não posso adicionar essa restriçao no where pq se não afetaria as duas somas...

 

alguem sabe o que eu posso fazer???

 

join on.. sei la.. não tenho muita experiencia em sql...

 

obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

case

 

"Sum(F.VlrPrc) as VlrTot2"

 

 

SUM(CASE WHEN F.CodPrc <> 301 AND F.CodPrc <> 302 AND F.CodPrc <> 305 THEN F.VlrPrc ELSE 0 END) AS VlrTot2

Compartilhar este post


Link para o post
Compartilhar em outros sites

case

 

"Sum(F.VlrPrc) as VlrTot2"

 

 

SUM(CASE WHEN F.CodPrc <> 301 AND F.CodPrc <> 302 AND F.CodPrc <> 305 THEN F.VlrPrc ELSE 0 END) AS VlrTot2

Exatamente o que eu precisava!

Mto obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta... resolveria... mas nao resolve.. eu testei em casa onde tenho interbase mais novo

mas qnd testei l no interbase 6 (o que o sistema usa) descobri que o interbase 6 não suporta CASE... afff

 

você tem alguma outraa sugestao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retirei o resolvio do topico

 

é melhor voce agradecer so depois dos testes para ter certeza

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conheço Interbase mas ele deve ter alguma function que faça algo que lhe atenda , se não e se ele suportar functions crie uma que lhe atenda nestes caso.

 

Funções que podem ser usadas .

 

Localizam parte de uma string em outra.

Semelhantes ao DECODE do Oracle

Semelhantes ao Case (IF talvez)´

 

Peça também em help a galara do Interbase.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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