![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Округление в запросе = Capability not supported ??? (D2007)
petvv © (2008-07-29 08:22:00)Был запрос:
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
((SUM(Statist.LitFact)*Statist.Price))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)<>0
union
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
((SUM(Statist.LitFact)*0))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)=0
усё работало.
Приспичило поставить округление, ставил cast и round
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(cast((SUM(Statist.LitFact)*Statist.Price) as decimal(15,2))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)<>0
union
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(cast((SUM(Statist.LitFact)*0) as decimal(15,2))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)=0
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(round((SUM(Statist.LitFact)*Statist.Price),2)-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)<>0
union
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(round((SUM(Statist.LitFact)*0),2)-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)=0
выдаёт Capability not supported ???
и где у меня коэффициент кривизны рук начинает резко отличаться от 0.
Нат (2008-07-30 09:31:00) [1]Удалено модератором
Johnmen (2008-07-30 08:50:00) [2]Удалено модератором
Нат (2008-07-29 18:22:00) [3]Удалено модератором
Amoeba (2008-07-29 14:50:00) [4]
> petvv (29.07.08 10:58) [14]
>
> О чём говорит сообщение я понимаю, как с этим бороться
Как? Каком кверху. Делать округление там, где оно возможно и не желать странного.
Правильный$Вася (2008-07-29 11:22:00) [5]
> как с этим бороться
держать удар, сцепить зубы
Anatoly Podgoretsky (2008-07-29 11:01:00) [6]Ну так не поддержано же.
petvv (2008-07-29 10:58:00) [7]О чём говорит сообщение я понимаю, как с этим бороться
Anatoly Podgoretsky (2008-07-29 10:23:00) [8]Справка говорит, что функции Round нет в LocalSQL о чем и говорит сообщение об ошибке.
petvv (2008-07-29 10:19:00) [9]В отчёте округление делать бесполезно, потому, что в отчёт выводится итог по маркам бензинов, а данные беруться из базы чеков и если на каждый чек не произвести округление, то расчитаная потеря будет фуфельной
palva (2008-07-29 10:11:00) [10]
> petvv (29.07.08 08:56) [2]
>
> Paradox, BDE
Я не знаю, как это делается в BDE. А документацию для вас мне изучать лень.
Johnmen (2008-07-29 10:01:00) [11]Тебе уже ответили: Capability not supported
petvv (2008-07-29 09:59:00) [12]Люди, вы мне можете ответить на мойвопрос, там можно, но не нужно
Johnmen (2008-07-29 09:52:00) [13]Почему бы не воспользоваться округлением в генераторе отчетов?
petvv (2008-07-29 09:43:00) [14]Далее из запроса напрямую выкидывается в отчёт FR расчитывается потеря на скидках
Johnmen (2008-07-29 09:30:00) [15]
> petvv (29.07.08 08:22)
А в чем сакральный смысл округления в запросе?
petvv (2008-07-29 09:13:00) [16]SQL сервера нет. Есть софтина, которая управляет АЗС, работает на БД Paradox. Использую D2007, для доступа к БД использую BDE
palva (2008-07-29 08:56:00) [17]
> round(43.666, 2) должно возвращать 43.67
Вообще я немного ошибся, MS SQL возвращает 43.670. Но неважно. Сначала выясните с каким SQL-сервером вы работаете.
Нат (2008-07-29 08:56:00) [18]
> (round((SUM(Statist.LitFact)*0),2)-SUM(Statist.CurFact)) Delta
Функции должны поддерживаться сервером БД.
Что дает умножение на ноль?
Можно попробовать упростить слегка выражение и вынести операцию СУММ за скобки
SUM( Statist.LitFact*Statist.Price - Statist.CurFact )
petvv (2008-07-29 08:56:00) [19]Paradox, BDE
palva (2008-07-29 08:48:00) [20]cast и round требуют дополнительных параметров, касающихся выходного формата.
Например round(43.666, 2) должно возвращать 43.67 (2 знака после точки)
Но это надо читать документацию к конкретному SQL-серверу, который у вас не указан.