[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