valmirluis42 Novato

Registrado: Segunda-Feira, 17 de Agosto de 2015 Mensagens: 60
|
Enviada: Qua Jan 30, 2019 11:52 am Assunto: Select no Firebird com problemas |
|
|
Tenho um select no SQl server que é o seguinte: | Código: | with
CTE_Sum as
(
SELECT
W.codigomaterial,
sum(w.QUANTIDADE) as Quantidade,
sum(w.totalliquido) as total_vendas,
sum(w.quantidade * v.ultimocustocalculado1) as total_liquido
from MOVIMENTOITEM as w inner join MATERIALALMOXARIFADO AS V ON W.codigomaterial=V.codigomaterial
where v.CODIGOALMOXARIFADO='1001' and w.DATA between'01-03-2018' and '01-12-2018'and w.CODIGOTABELAPRECO in ('01001','01002','01003','01004') AND V.IDENTIFICADOR='A' AND W.SISTEMAORIGEM='BAL' and codigotabela1 is null AND W.CODIGOMATERIAL LIKE '9900%'
group by
W.CODIGOMATERIAL
),
CTE_RN as
(
SELECT
codigomaterial,
Quantidade,
total_liquido,
total_vendas,
total_vendas / sum(total_vendas) over() * 100 as Representatividade,
ROW_NUMBER() OVER(ORDER BY total_vendas DESC) as RN
FROM CTE_Sum
)
select
ROW_NUMBER() OVER (ORDER BY e.RN) AS Sequencia,
i.codigomaterial,
i.codigoauxiliar,
i.descricao,
i.percmargem,
i.status,
e.Quantidade,
e.total_liquido,
e.total_vendas,
e.Representatividade,
(select sum(s.Representatividade) from CTE_RN s
where s.RN <= e.RN) as ReprAcum
from cadmaterial i
INNER JOIN CTE_RN e
ON i.CODIGOMATERIAL = e.codigomaterial
where i.TIPO='m'
order by e.RN
|
Estou tentando montar no Firebird 2.5 o mesmo sql dessa maneira | Código: | with
CTE_SUM AS
(SELECT
W.cod_produto,
sum(w.Qtde) as Quantidade,
sum(w.vl_total) as total_vendas,
sum(w.qtde * v.vl_custo) as total_liquido
from venda_produto as w inner join produto_custo AS V ON W.cod_produto=V.cod_produto
inner join venda as e on w.cod_venda=e.cod_venda
where (dt_emissao Between ('01.12.2018') And ('31.12.2018'))
group by
W.COD_produto ),
CTE_RN as
( SELECT
W.cod_produto,
Quantidade,
total_vendas,
total_liquido,
total_vendas/ sum(total_vendas) over() * 100 as Representatividade,
from CTE_Sum
)
select
i.cod_produto,
i.descricao,
f.qtde,
f.total_liquido,
f.total_vendas,
f.representatividade,
(select sum(s.representatividade) from CTE_RN s where s.rn <= f.RN )as ReprAcum
from produto i inner join CTE_RN f
on i.cod_produto = f.cod_produto
order by f.RN |
O problema é que o over no firebird não funciona, tem que ser o RDB$DB_KEY ou é outra função? |
|