Привет
Есть у меня мудрённый код. Я не могу понять, или так нельзя писать или
сервер не правильно считает.
В таком виде, если есть значения в колонках IDColor и UseByDate null, то
результат один,
select
Rem.iddepot,
Rem.idcommodity,
case :qq1
when 1 then Rem.costprice
else null end as f1,
case :qq2
when 1 then Rem.saleprice
else null end as f2,
case :qq3
when 1 then Rem.usebydate
else null end as f3,
case :qq4
when 1 then Rem.idcolor
else null end as f4,
case :qq5
when 1 then Rem.barcode
else null end as f5,
case :qq6
when 1 then Rem.param1
else null end as f6,
case :qq7
when 1 then Rem.param2
else null end as f7,
Sum(Rem.QUANTITY)
from remainder Rem
where IDDate<=:LIDDate
group by 1,2,3,4,5,6,7,8,9
having Sum(Rem.QUANTITY)>0
Если написать так
case :qq3
when 1 then coalesce(Rem.usebydate,current_date )
else null end as f3,
case :qq4
when 1 then coalesce(Rem.idcolor,0)
else null end as f4,
то результат верный.
Есть воспроизводимый тест.
Я замечал и не раз, что если вставить константу в качестве поля и
использовать агрегат с группировкой по этой константе, то такие чудеса
бывают.
Нужна помощь.
Дмитрий