Fórum Grupo By com Cláusula Where - Firebird #611851
10/07/2020
0
segue minha query ja com o count ...
select
d.id,
count(distinct(d.numero)) As total_acertos,
d.numero,
d.data,
d.tot_dep,
a.data,
case
when (a.tipo = 'V') then 'Vinculado'
else 'Principal'
end as tipo,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
case
when (c.obs like ('%baú%')) then 'bau'
else 'frota'
end as tipo_mot,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
from entdesp a inner join despesas b on a.id_despesa = b.id
inner join motoristas c on a.id_motorista = c.id
inner join acertos d on a.id_motorista = d.id_motorista
where a.data >= '01.06.2020' and a.data <= '30.06.2020'
and d.data >= a.data
and a.id_fornecedor = 2225
and a.id_motorista = 168
and b.codigo in (72,63,48)
Victor Andrade
Curtir tópico
+ 0Post mais votado
15/07/2020
select
count(distinct(d.numero)) As total_acertos,
a.data,
case
when (a.tipo = 'V') then 'Vinculado'
else 'Principal'
end as tipo,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
case
when (c.obs like ('%baú%')) then 'bau'
else 'frota'
end as tipo_mot,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
from
entdesp a
inner join
despesas b on a.id_despesa = b.id
and b.codigo in (72,63,48)
inner join
motoristas c on a.id_motorista = c.id
inner join
acertos d on a.id_motorista = d.id_motorista
and d.data >= a.data
where
a.data between '01.06.2020' and '30.06.2020'
and a.id_fornecedor = 2225
and a.id_motorista = 168
group by
a.data,
a.tipo,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
c.obs,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
Emerson Nascimento
Gostei + 2
Mais Posts
14/07/2020
Bruno
segue minha query ja com o count ...
select
d.id,
count(distinct(d.numero)) As total_acertos,
d.numero,
d.data,
d.tot_dep,
a.data,
case
when (a.tipo = 'V') then 'Vinculado'
else 'Principal'
end as tipo,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
case
when (c.obs like ('%baú%')) then 'bau'
else 'frota'
end as tipo_mot,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
from entdesp a inner join despesas b on a.id_despesa = b.id
inner join motoristas c on a.id_motorista = c.id
inner join acertos d on a.id_motorista = d.id_motorista
where a.data >= '01.06.2020' and a.data <= '30.06.2020'
and d.data >= a.data
and a.id_fornecedor = 2225
and a.id_motorista = 168
and b.codigo in (72,63,48)
Seu group by?
Gostei + 0
14/07/2020
Emerson Nascimento
você não terá como fazer a conta que precisa, porque está "selecionando" vários campos da tabela d (acertos).
select
d.id, -- quando colocar este campo no group by, a count() abaixo sempre vai retornar 1
count(distinct(d.numero)) As total_acertos,
d.numero,
d.data,
d.tot_dep,
a.data,
case
when (a.tipo = ''V'') then ''Vinculado''
else ''Principal''
end as tipo,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
case
when (c.obs like (''%baú%'')) then ''bau''
else ''frota''
end as tipo_mot,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
from
entdesp a
inner join
despesas b on a.id_despesa = b.id
and b.codigo in (72,63,48)
inner join
motoristas c on a.id_motorista = c.id
inner join
acertos d on a.id_motorista = d.id_motorista
and d.data >= a.data
where
a.data between ''01.06.2020'' and ''30.06.2020''
and a.id_fornecedor = 2225
and a.id_motorista = 168Gostei + 1
15/07/2020
Victor Andrade
group by
a.data,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
Gostei + 0
15/07/2020
Victor Andrade
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Gostei + 0
15/07/2020
Bruno
select
count(distinct(d.numero)) As total_acertos,
a.data,
case
when (a.tipo = 'V') then 'Vinculado'
else 'Principal'
end as tipo,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
case
when (c.obs like ('%baú%')) then 'bau'
else 'frota'
end as tipo_mot,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
from
entdesp a
inner join
despesas b on a.id_despesa = b.id
and b.codigo in (72,63,48)
inner join
motoristas c on a.id_motorista = c.id
inner join
acertos d on a.id_motorista = d.id_motorista
and d.data >= a.data
where
a.data between '01.06.2020' and '30.06.2020'
and a.id_fornecedor = 2225
and a.id_motorista = 168
group by
a.data,
a.tipo,
a.quantidade,
a.unidade,
a.precounit,
a.precototal,
a.documento,
a.id_motorista,
c.nome,
c.obs,
b.id,
b.codigo,
b.descricao,
b.preventiva,
b.pago_motorista
Pelo que vi faltou o c.obs anteriormente creio que a resposta do Emerson esteja correta
Gostei + 1
16/07/2020
Victor Andrade
Muuito Obrigado !!!
Gostei + 0
16/07/2020
Victor Andrade
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)