Instrução SQL

Firebird

18/03/2005

Olá Pessoal,

ESTOU UTILIZANDO INTERBASE, TENHO 12 TABELAS COM OS MESMOS CAMPOS (1 tab PARA CADA MES). PRECISO CRIAR 1 CONSULTA QUE APAREÇA O NUMERO, NOME E O VALOR ANUAL (SOMATÓRIA) QUE CADA CLIENTE GASTOU NA EMPRESA.
DETALHE SO APARECERÁ NESTE RELATÓRIO OS CLIENTES QUE ESTIVEREM NA TABELA CCR0ASSO

SEGUE A INSTRUÇÃO:

SELECT A.FCONTA,
A.FNOME,
SUM(B.FVALOR)TOTAL

FROM CCR0ASSO A,
JRJAN B

WHERE A.FCONTA = B.FCONTA AND A.FCODLANC >=994 AND <= 995

GROUP BY
A.FCONTA

COMO FAÇO PARA OS OUTROS MESES ?

Um Abraço

Renato



[b:c8883aecb7]Título editado: ´INSTRUÇÃO SQL´[/b:c8883aecb7]
Favor não escrever o título utilizando caixa alta. Por favor, leia as regras de conduta.


Rfp170

Rfp170

Curtidas 0

Respostas

Afarias

Afarias

18/03/2005

|ESTOU UTILIZANDO INTERBASE, TENHO 12 TABELAS COM OS MESMOS
|CAMPOS (1 tab PARA CADA MES).

me cheira algo bem ´inconsistente´ com o modelo relacional


|COMO FAÇO PARA OS OUTROS MESES ?

repita a consulta para cada mês. se quer todos juntos vc terá q fazer um grande UNION -- vc pode lançar mão de VIEWS de STORED PROCS mas o resultado é q terá um sistema sempre difícil de manter e com baixa performance.

A melhor solução para vc (creio eu) é rever seu modelo de dados.


T+


GOSTEI 0
Rfp170

Rfp170

18/03/2005

CONSEGUI FAZER DESTA FORMA:

SELECT A.FCONTA, A.FNOME, SUM(B.FVALOR)TOTAL
FROM CCR0ASSO A,
JRJAN B

WHERE FCODLANC>=´994´ AND FCODLANC<=´995´ AND A.FCONTA=B.FCONTA

GROUP BY A.FCONTA, A.FNOME

UNION

SELECT A.FCONTA, A.FNOME, SUM(B.FVALOR)TOTAL
FROM CCR0ASSO A,
JRFEV B

WHERE FCODLANC>=´994´ AND FCODLANC<=´995´ AND A.FCONTA=B.FCONTA

GROUP BY A.FCONTA, A.FNOME

MAS COMO FAÇO PARA COLOCAR EM COLUNAS A SOMATÓRIA DOS MESES (CONTA,NOME, TOTJANEIRO, TOTFEVEREIRO) POIS ESTA CRIANDO LINHA PARA CADA MES.


GOSTEI 0
POSTAR