Fórum SQL - Como fazer para mostrar os valores de vendas mes/mes #37237
03/07/2003
0
Tenho que fazer um relatório onde saia somente o total de vendas de cada mes. Olhem minha sql:
SELECT SUM(NOT_TOTALLIQ) AS VALOR ,EXTRACT(MONTH FROM NOT_DTEMISSAO) AS MES FROM NOTAFISCAL
GROUP BY MES
Mas o interbase não aceita o group by utilizando a palavra MES. Alguem sabe como fazer ?
SELECT SUM(NOT_TOTALLIQ) AS VALOR ,EXTRACT(MONTH FROM NOT_DTEMISSAO) AS MES FROM NOTAFISCAL
GROUP BY MES
Mas o interbase não aceita o group by utilizando a palavra MES. Alguem sabe como fazer ?
Weber
Curtir tópico
+ 0
Responder
Posts
03/07/2003
Afarias
>> Mas o interbase não aceita o group by utilizando a palavra MES.
É verdade. O IB 6.0 não aceita GROUP BY por função.
vc tem 2 (duas) soluções:
1 - crie uma view da tabela, e execute seu relatório a partir da view:
create view VW_NOTAFISCAL (TOTAL_LIQ, DATA_EMISSAO, MES, ...) as
select NOT_TOTALLIQ, NOT_DTEMISSAO, EXTRACT(MONTH FROM NOT_DTEMISSAO), ... FROM NOTAFISCAL;
select mes, sum(total_liq) as valor from vw_notafiscal
group by mes;
2 - tem um campo MES (integer) em sua tabela q seria preenchido por uma TRIGGER:
create trigger NOME_TRIGGER for NOTAFISCAL before insert as
begin
new.MES = extract(month from new.NOT_DTEMISSAO);
end^
create trigger NOME_TRIGGER for NOTAFISCAL before update as
begin
if (new.NOT_DTEMISSAO <> old.NOT_DTEMISSAO) then
new.MES = extract(month from new.NOT_DTEMISSAO);
end^
T+
É verdade. O IB 6.0 não aceita GROUP BY por função.
vc tem 2 (duas) soluções:
1 - crie uma view da tabela, e execute seu relatório a partir da view:
create view VW_NOTAFISCAL (TOTAL_LIQ, DATA_EMISSAO, MES, ...) as
select NOT_TOTALLIQ, NOT_DTEMISSAO, EXTRACT(MONTH FROM NOT_DTEMISSAO), ... FROM NOTAFISCAL;
select mes, sum(total_liq) as valor from vw_notafiscal
group by mes;
2 - tem um campo MES (integer) em sua tabela q seria preenchido por uma TRIGGER:
create trigger NOME_TRIGGER for NOTAFISCAL before insert as
begin
new.MES = extract(month from new.NOT_DTEMISSAO);
end^
create trigger NOME_TRIGGER for NOTAFISCAL before update as
begin
if (new.NOT_DTEMISSAO <> old.NOT_DTEMISSAO) then
new.MES = extract(month from new.NOT_DTEMISSAO);
end^
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)