Проблемка с вычислениями. FireBird 1.5.3. Есть следующие таблицы:
Код: Выделить всё
юзеры - ID, FIO,...
проценты - id_юзера, процент, дата_начал_действия, дата_конца_действия
заказы - ID, id_Юзера, оплата, скидка, ID_услуги, дата,...
прайс - ID_услуги, цена, дата_начал_действия, дата_конца_действия
следующее:
Код: Выделить всё
select ю.ID,
min(ю.FIO),
cast(sum((п.цена - п.цена/100*з.скидка)*з.оплата/100*проц.процент) as numeric(10,2))
from заказы з
left join проценты проц
on(з.дата >= проц.дата_начала_действия and з.дата <= проц.дата_конца_действия and
з.оплата = 1 and проц.процент > 0 and з.id_юзера <> 19 and з.id_юзера <> 20 and
з.дата >= d1 and з.дата <= d2)
left join юзеры ю
on(проц.id_юзера = ю.id)
left join прайс п
on(з.id_услуги = п.id_услуги and з.дата>=п.дата_начала_действия and
з.дата<=п.дата_конца_действия)
where ю.категория = 1 and ю.id <> 19 and ю.id <> 20
group by ю.id
а запрос выдаёт мне сумму 545398,35
или например в ручную - 389557,75
а запрос выдаёт - 389570,25...
Типы полей:
Код: Выделить всё
прайс.цена - numeric(10,2)
заказы.скидка - SMALLINT
проценты.процент - numeric(2,2)
пробовал убрать cast не помогло...