Qual o comando para Divisão no Firebird ?

26/11/2021

0

Olá amigos, preciso dividir dois campos, mas não consegui com o seguinte comando.

(ss.qtde / ss.vlrmed)

Alguém pode me ajudar?
Marcos Batista

Marcos Batista

Responder

Posts

26/11/2021

Emerson Nascimento

e assim mesmo.
o que aconteceu? deu erro? não gerou o resultado esperado?
publique parte do conteúdo da tabela e qual o resultado apresentado ao dividir esse conteúdo.
Responder

26/11/2021

Marcos Batista

e assim mesmo.
o que aconteceu? deu erro? não gerou o resultado esperado?
publique parte do conteúdo da tabela e qual o resultado apresentado ao dividir esse conteúdo.
select
data,
doc,
grupo,
cdc,
cod,
matmed,
qtde,
vlrmed,
und
from (
select
s.data,
s.doc,
''''SAIDA'''' movimentacao,
(select first 1 g.nome from gegrupos g where g.cod = i.gru) grupo,
(select first 1 nome from tbcencus where cod=s.cdc) cdc,
ss.item cod,
i.nome matmed,
i.uni_con und,
ss.qtde,
ss.vlrmed,
0 devol_custo
from gecadsai s
left join gelansai ss on s.ano=ss.ano and s.mes=ss.mes and s.doc=ss.doc
left join geitens i on ss.item=i.cod
where ss.consol=''''T''''
and s.data between :data1 and :data2
group by
s.data,
s.doc,
i.gru,
s.cdc,
ss.item,
i.nome,
i.uni_con,
s.data,
ss.vlrmed,
ss.qtde

UNION

select
d.data,
d.doc,
''''DEVOLUÇÃO'''' movimentacao,
(select first 1 g.nome from gegrupos g where g.cod = ii.gru) grupo,
(select max(nome) from tbcencus where cod=d.cdc) cdc,
l.item cod,
ii.nome matmed,
ii.uni_con und,
0 saida_custo,
l.qtde,
l.vlrmed
from gecaddev d
left join gelandev l on d.id=l.id_gecaddev
left join geitens ii on l.item=ii.cod
where l.consol=''''T''''
and d.data between :data1 and :data2
group by
d.data,
d.doc,
ii.gru,
d.cdc,
l.item,
ii.nome,
ii.uni_con,
d.data,
l.vlrmed,
l.qtde
)
order
by cdc,
matmed,
cod,
grupo






essa é a query, quando adiciono essa divisão não funciona nada
Responder

26/11/2021

Emerson Nascimento

o que quer dizer "não funciona nada"???
dá erro? qual o erro apresentado??

Responder

26/11/2021

Marcos Batista

o que quer dizer "não funciona nada"???
dá erro? qual o erro apresentado??



Dynamic SQL Error.
SQL error code = -104.
Invalid command.
count of column list and variable list do not match.

erro apresentado
Responder

26/11/2021

Marcos Batista

e assim mesmo.
o que aconteceu? deu erro? não gerou o resultado esperado?
publique parte do conteúdo da tabela e qual o resultado apresentado ao dividir esse conteúdo.
Dynamic SQL Error.
SQL error code = -104.
Invalid command.
count of column list and variable list do not match.

erro apresentado
Responder

26/11/2021

Emerson Nascimento

a ordem das colunas está errada.
select
	data,
	doc,
	(select first 1 g.nome from gegrupos g where g.cod = tab.gru) grupo,
	(select first 1 nome from tbcencus t where t.cod = tab.cdc) cdc,
	cod,
	matmed,
	qtde,
	vlrmed,
	divisao, -- campo novo
	und
from (
	select
		s.data,
		s.doc,
		'SAIDA' movimentacao,
		i.gru,
		s.cdc,
		ss.item cod,
		i.nome matmed,
		i.uni_con und,
		ss.qtde,
		ss.vlrmed,
		0 devol_custo,
		(ss.qtde / ss.vlrmed) divisao -- é isso mesmo? quantidade divida pelo valor???
	from
		gecadsai s
	left join
		gelansai ss on
		s.ano=ss.ano and s.mes=ss.mes and s.doc=ss.doc
	left join
		geitens i on
		ss.item=i.cod
	where
		ss.consol='T'
		and s.data between :data1 and :data2
	group by
		s.data,
		s.doc,
		i.gru,
		s.cdc,
		ss.item,
		i.nome,
		i.uni_con,
		s.data,
		ss.vlrmed,
		ss.qtde

	UNION

	select
		d.data,
		d.doc,
		'DEVOLUÇÃO' movimentacao,
		ii.gru,
		d.cdc,
		l.item cod,
		ii.nome matmed,
		ii.uni_con und,
		l.qtde,
		l.vlrmed,
		0 saida_custo, -- este campo estava na ordem errada! ao utilizar UNION, garanta que os campos 'semelhantes' estejam na mesma posicao
		(l.qtde / l.vlrmed) divisao, -- é isso mesmo? quantidade divida pelo valor???
	from
		gecaddev d
	left join
		gelandev l on
		d.id=l.id_gecaddev
	left join
		geitens ii on
		l.item=ii.cod
	where
		l.consol='T'
		and d.data between :data1 and :data2
	group by
		d.data,
		d.doc,
		ii.gru,
		d.cdc,
		l.item,
		ii.nome,
		ii.uni_con,
		d.data,
		l.vlrmed,
		l.qtde
) tab
order by
	cdc,
	matmed,
	cod,
	grupo



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar