Grupo By com Cláusula Where - Firebird
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
Post 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
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?
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 = 168
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
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)
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
Clique aqui para fazer login e interagir na Comunidade :)