[firebase-br] Melhorar sentença SQL
tetraetila®
tetraetila em gmail.com
Qua Maio 27 09:14:44 -03 2009
Olá Pessoal
Faço dois "select's" que extraem dados de duas tabelas A001005_TBL e
A001028_TBL a cláusula where que diferencia um select do outro é apenas
A.a005_tipo = '4' ou A.a005_tipo = '1', tem como eu melhorar isto fazendo
apenas uma sentença e não as duas? O mesmo critério eu utilizo para somar. O
que eu quero é otimizar estas sentenças uma vez que as utilizo em vários
outros locais.
Muito obrigado!
Adilson
Obs.: Sentenças abaixo:
Tipo = '1'
select A.A005_DMOV, A.A005_NFIN, A.A005_NFFI, A.A005_SERI, A.A005_SUBS,
A.A005_EMIT, A.A005_VCON, A.A005_TIPO, B.A028_CFOP, B.A028_SEQU from
A024005_tbl A, A024028_tbl B where A.A005_DMOV between '01.01.2008' and
'31.01.2008' and A.A005_DMOV = B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and
A.A005_NFFI = B.A028_NFFI and A.A005_SERI = B.A028_SERI and A.A005_SUBS =
B.A028_SUBS and A.A005_EMIT = B.A028_EMIT and A.A005_TIPO = '1' and
B.A028_INTE <> 'N' order by A.A005_DMOV, A.A005_NFIN
Tipo = '4'
select A.A005_DMOV, A.A005_NFIN, A.A005_NFFI, A.A005_SERI, A.A005_SUBS,
A.A005_EMIT, A.A005_VCON, A.A005_TIPO, B.A028_CFOP, B.A028_SEQU from
A024005_tbl A, A024028_tbl B where A.A005_DMOV between '01.01.2008' and
'31.01.2008' and A.A005_DMOV = B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and
A.A005_NFFI = B.A028_NFFI and A.A005_SERI = B.A028_SERI and A.A005_SUBS =
B.A028_SUBS and A.A005_EMIT = B.A028_EMIT and A.A005_TIPO = '4' and
B.A028_INTE <> 'N' order by A.A005_DMOV, A.A005_NFIN
Soma Tipo = '1'
select sum(A.A005_VCON) AS TOTAL from A024005_tbl A, A024028_tbl B where
A.A005_DMOV between '01.01.2008' and '31.01.2008' and A.A005_DMOV =
B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and A.A005_NFFI = B.A028_NFFI and
A.A005_SERI = B.A028_SERI and A.A005_SUBS = B.A028_SUBS and A.A005_EMIT =
B.A028_EMIT and A.A005_TIPO = '1' and B.A028_INTE <> 'N'
Soma Tipo = '4'
select sum(A.A005_VCON) AS TOTAL from A024005_tbl A, A024028_tbl B where
A.A005_DMOV between '01.01.2007' and '31.12.2007' and A.A005_DMOV =
B.A028_DMOV and A.A005_NFIN = B.A028_NFIN and A.A005_NFFI = B.A028_NFFI and
A.A005_SERI = B.A028_SERI and A.A005_SUBS = B.A028_SUBS and A.A005_EMIT =
B.A028_EMIT and A.A005_TIPO = '4' and B.A028_INTE <> 'N'
Mais detalhes sobre a lista de discussão lista