Ajuda em SQL no firebird 2.5
Olá pessoal
Fiz o select abaixo porém está dando a mensagem:
"Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause"
Eu sei que isso é devido eu não ter colocado os fields VALOR e PERCENTUAL porém quando eu faço isso o select també ira agrupar por estes, tem alguma forma de eu fazer este sql sem este agrupamento?!, pois tenho que agrupar apenas pela tabela e vendedor.
vlw
SELECT a.ite_tabela_preco,
a.ped_vendedor as vendedor,
sum(COALESCE(a.ite_total_tab_precofinal,0)) as VL_PRECOFINAL,
sum(COALESCE(a.ite_total_tab_icmst,0)) as VL_ICMSST,
sum(COALESCE(a.ite_total_tab_ipi,0)) as VL_IPI,
sum(COALESCE(a.ite_frete,0)) as VL_FRETE,
sum(COALESCE(a.ite_seguro,0)) as VL_SEGURO,
(case
when COALESCE(b.VALOR,0) > 0 then
sum(COALESCE(a.ITE_QUANTIDADE,0)) * b.VALOR
else
sum(COALESCE(a.ITE_TOTAL_TAB_PRECOFINAL,0) * (b.PERCENTUAL / 100))
END) as VL_PRECOFINAL_COMISSAO
FROM vw_relatorio a
left join COMISSAO_TABELA b on a.ITE_CODIGO_PRODUTO = b.PRODUTO and
a.PED_VENDEDOR = b.VENDEDOR
WHERE a.ped_vendedor = 101 and
a.ITE_DATA_DIGITACAO between '05/01/2013' and '05/31/2013'
GROUP BY 2,1
Fiz o select abaixo porém está dando a mensagem:
"Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause"
Eu sei que isso é devido eu não ter colocado os fields VALOR e PERCENTUAL porém quando eu faço isso o select també ira agrupar por estes, tem alguma forma de eu fazer este sql sem este agrupamento?!, pois tenho que agrupar apenas pela tabela e vendedor.
vlw
SELECT a.ite_tabela_preco,
a.ped_vendedor as vendedor,
sum(COALESCE(a.ite_total_tab_precofinal,0)) as VL_PRECOFINAL,
sum(COALESCE(a.ite_total_tab_icmst,0)) as VL_ICMSST,
sum(COALESCE(a.ite_total_tab_ipi,0)) as VL_IPI,
sum(COALESCE(a.ite_frete,0)) as VL_FRETE,
sum(COALESCE(a.ite_seguro,0)) as VL_SEGURO,
(case
when COALESCE(b.VALOR,0) > 0 then
sum(COALESCE(a.ITE_QUANTIDADE,0)) * b.VALOR
else
sum(COALESCE(a.ITE_TOTAL_TAB_PRECOFINAL,0) * (b.PERCENTUAL / 100))
END) as VL_PRECOFINAL_COMISSAO
FROM vw_relatorio a
left join COMISSAO_TABELA b on a.ITE_CODIGO_PRODUTO = b.PRODUTO and
a.PED_VENDEDOR = b.VENDEDOR
WHERE a.ped_vendedor = 101 and
a.ITE_DATA_DIGITACAO between '05/01/2013' and '05/31/2013'
GROUP BY 2,1
Ricardo Matarazzo
Curtidas 0
Respostas
Lg Embarcadero
04/07/2013
Olá, não entendi o seu group by, mas quanto a este, obrigatoriamente quando usado deve conter todos os campos contidos no select. Você esta fazendo isso? Qual resultado realmente esta querendo ter?
GOSTEI 0