Como criar uma view que some valores

Firebird

16/12/2004

Olá pessoal,

Tenho uma tabela chamada CONTAS e outra chamada MOVCAIXA.
Gostaria de saber como criar uma view apresentando os dados
REF, DESCRICAO da tabela CONTAS somando o campo VALOR da tabela MOVCAIXA de todos os registros coincidentes.

Isso é possível

Agradeço desde já

Marcos


Prmas

Prmas

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

16/12/2004

Colega,

Sim. É possível... seria um código parecido com este :
CREATE VIEW MINHA_VIEW(
  REF,
  DESCRICAO,
  VALOR_TOTAL)
AS
select
  C.REF,
  C.DESCRICAO,
  sum(M.VALOR)
from
  CAIXA C
left join
  MOVCAIXA M on (C.REF = M.REF)
group by 1,2;


Desta forma são listadas as contas e os valores totais para elas, mas se a conta não tiver movimento, o valor total será nulo...
Se desejar que se a conta não tiver movimento, ela nem seja listada, substitua o ´[b:9acf6aa8e5]left join[/b:9acf6aa8e5]´ por ´[b:9acf6aa8e5]inner join[/b:9acf6aa8e5]´.

Espero ter ajudado...
T+


GOSTEI 0
Prmas

Prmas

16/12/2004

Olá Vinicius,

Obrigado pela ajuda, mas ainda não funcionou:

Por favor veja qual o erro no código abaixo porque só funciona se eu não usar o SUM().

[list:5d29749d55]
CREATE VIEW VWCXITENS(
REF,
CREDITO,
DEBITO,
GERENCIAL,
CONTA,
TOTAL)
AS
select
CT.REF,
CT.CONTACREDITO,
CT.CONTADEBITO,
CT.CONTAGERENCIAL,
CX.REFCONTA,
SUM(CX.VALOR)
from Contas CT
inner join CaixaItens CX on (CT.REF = CX.REFCONTA)
[/list:u:5d29749d55]

Agradeço desde já


GOSTEI 0
Vinicius2k

Vinicius2k

16/12/2004

Marcos,

Vc está usando uma função de agregação (SUM), então é necessário o agrupamento (GROUP BY), assim como no código que lhe passei...
Falta isto :
...
group by CT.REF, CT.CONTACREDITO, CT.CONTADEBITO, CT.CONTAGERENCIAL, CX.REFCONTA


ou

...
group by 1, 2 , 3, 4, 5


Só não deve constar no agrupamento a coluna do SUM.

OK?

T+


GOSTEI 0
Prmas

Prmas

16/12/2004

Valeu Vinicius,

Funcionou perfeitamente!!!

Um abraço

Marcos


GOSTEI 0
POSTAR