Como fazer isso em SQL ?
Caros amigos,
Tenho a seguinte estrutura:
Tabela Lançamentos
Codigo, CodDiscrimina, Data, Janeiro, Fevereiro, Marco, Abril, Maio Junho, Julho
Tabela Discrimina
CodDiscrimina, Descrição
O que estou querendo é fazer uma estrução SQL que possa obter o seguinte relatório conforme abaixo das tabela acima apresendatas.
--------------------------------------------------------------------------------------Descrição Janeiro Fevereiro Marco Abril Maio Junho Julho TOTAL
Boleto 40 40 0 30 40 0 0 150
Cartão 50 30 0 10 30 0 0 120
Tele-Fax 70 10 0 59 30 0 0 169
Telefones 80 50 0 30 10 0 0 170
Xerox 30 40 30 10 20 0 0 130
TOTAL 270 170 30 139 139 0 0
--------------------------------------------------------------------------------------
Estou usando Delphi 7 com Interbase 6.0 e componentes IBX
Mantmor
Tenho a seguinte estrutura:
Tabela Lançamentos
Codigo, CodDiscrimina, Data, Janeiro, Fevereiro, Marco, Abril, Maio Junho, Julho
Tabela Discrimina
CodDiscrimina, Descrição
O que estou querendo é fazer uma estrução SQL que possa obter o seguinte relatório conforme abaixo das tabela acima apresendatas.
--------------------------------------------------------------------------------------Descrição Janeiro Fevereiro Marco Abril Maio Junho Julho TOTAL
Boleto 40 40 0 30 40 0 0 150
Cartão 50 30 0 10 30 0 0 120
Tele-Fax 70 10 0 59 30 0 0 169
Telefones 80 50 0 30 10 0 0 170
Xerox 30 40 30 10 20 0 0 130
TOTAL 270 170 30 139 139 0 0
--------------------------------------------------------------------------------------
Estou usando Delphi 7 com Interbase 6.0 e componentes IBX
Mantmor
Mantmor
Curtidas 0
Respostas
Aroldo Zanela
27/05/2003
Caros amigos,
Tenho a seguinte estrutura:
Tabela Lançamentos
Codigo, CodDiscrimina, Data, Janeiro, Fevereiro, Marco, Abril, Maio Junho, Julho
Tabela Discrimina
CodDiscrimina, Descrição
O que estou querendo é fazer uma estrução SQL que possa obter o seguinte relatório conforme abaixo das tabela acima apresendatas.
--------------------------------------------------------------------------------------Descrição Janeiro Fevereiro Marco Abril Maio Junho Julho TOTAL
Boleto 40 40 0 30 40 0 0 150
Cartão 50 30 0 10 30 0 0 120
Tele-Fax 70 10 0 59 30 0 0 169
Telefones 80 50 0 30 10 0 0 170
Xerox 30 40 30 10 20 0 0 130
TOTAL 270 170 30 139 139 0 0
--------------------------------------------------------------------------------------
Estou usando Delphi 7 com Interbase 6.0 e componentes IBX
Mantmor
SELECT DIS.DESCRICAO, LAN.JANEIRO, LAN.FEVEREIRO, LAN.MARCO, LAN.ABRIL, LAN.MAIO, LAN.JUNHO, LAN.JULHO, (LAN.JANEIRO + LAN.FEVEREIRO + LAN.MARCO + LAN.ABRIL + LAN.MAIO + LAN.JUNHO + LAN.JULHO) AS TOTAL FROM LANCAMENTOS LAN INNER JOIN DISCRIMINA DIS ON (LAN.CODDISCRIMINA = DIS.CODDISCRIMINA) UNION SELECT ´TOTAL GERAL ´, SUM(LAN.JANEIRO), SUM(LAN.FEVEREIRO), SUM(LAN.MARCO), SUM(LAN.ABRIL), SUM(LAN.MAIO), SUM(LAN.JUNHO), SUM(LAN.JULHO), (SUM(LAN.JANEIRO) + SUM(LAN.FEVEREIRO) + SUM(LAN.MARCO) + SUM(LAN.ABRIL) + SUM(LAN.MAIO) + SUM(LAN.JUNHO) + SUM(LAN.JULHO)) AS TOTAL FROM LANCAMENTOS LAN INNER JOIN DISCRIMINA DIS ON (LAN.CODDISCRIMINA = DIS.CODDISCRIMINA)
No segundo select da instrução acima a expressão ´TOTAL GERAL´ deve ter o mesmo comprimento do campo DIS.DESCRICAO
GOSTEI 0
Torres Delphi
27/05/2003
Nao entendi o motivo da sua tabela contem apenas alguns meses. Ela seria ´elastica´?
Acho que facilitaria muito colocar uma data em cada lancamento ao inves de ir colocando mes a mes.
Para saber qual foi, usaria uma funcao que retornaria o mes da data de lancamento. O comando SQL demonstrato resolve seu problema, mas acho que suas tabelas deveria ser normalizadas novamente de modo que fique mais objetiva.
Abracos
Acho que facilitaria muito colocar uma data em cada lancamento ao inves de ir colocando mes a mes.
Para saber qual foi, usaria uma funcao que retornaria o mes da data de lancamento. O comando SQL demonstrato resolve seu problema, mas acho que suas tabelas deveria ser normalizadas novamente de modo que fique mais objetiva.
Abracos
GOSTEI 0