[firebase-br] SUBSELECT

Jeferson Oliveira jefersonfoliveira em gmail.com
Sex Jul 27 14:52:46 -03 2007


Jefter wrote:
 > Amigo,  é exatamente isso que necessito, mas tem um porém...  eu uso 
VS2005
 > (ADO.NET, com Datasets, DataAdapters etc..)  Lí por alto o artigo passado
 > por vc,  axei outros no google também....   Prá mim não precisa do 
Total das
 > informações, só preciso cruzar as mesmas.  Este recurso exixte no FB 
2.0????

Existe em qualquer versão do Firebird, ou em qualquer outro SGBD que 
utiliza PSQL ou algo semelhante.
Um exemplo:

select distinct V.SUB_CLASSE,
        (select coalesce(sum(V1.QUANTIDADE), 0)
         from VW_02 V1
         where V1.DATAMOVIMENTACAO between :DataInicio and :DataFim
           and V1.COD_CLASSE = :COD_CLASSE
           and V1.SUB_CLASSE = V.SUB_CLASSE
           and V1.NOME_FUNCIONARIO = 'GATO') as GATO,
        (select coalesce(sum(V1.QUANTIDADE), 0)
         from VW_02 V1
         where V1.DATAMOVIMENTACAO between :DataInicio and :DataFim
           and V1.COD_CLASSE = :COD_CLASSE
           and V1.SUB_CLASSE = V.SUB_CLASSE
           and V1.NOME_FUNCIONARIO = 'PULGA') as PULGA
from VW_02 V
where V.DATAMOVIMENTACAO between :DataInicio and :DataFim
   and V.COD_CLASSE = :COD_CLASSE
order by 1, 2

Como pôde perceber, o nome dos campos foi fixado (GATO, PULGA), o que 
não é a situação ideal. Para obter o nome dos campos dinamicamente, 
escreva um stored procedure que primeiro selecione todos os nomes e 
depois monte a sentença definindo os nomes dos campos. Me parece bem 
menos trabalhoso do que o exemplo em Delphi apresentado no artigo.



Abraço!
Jeferson Oliveira


Enviado pelo Mozilla Thunderbird
http://br.mozdev.org/thunderbird





Mais detalhes sobre a lista de discussão lista