Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

SQL-запрос   Найти похожие ветки 

 
Sandman25 ©   (2004-07-02 12:23) [40]

[39] Johnmen ©   (02.07.04 12:19)

А кто мешает написать
select sum(case kodpl when "П" then Summ when "Р" -Summ  else 0 end)
from table

Просто [17] работает быстрее, а если мы имеем check(kodPl in "П", "Р"), то 100% надежно.


 
Johnmen ©   (2004-07-02 12:26) [41]

>Sandman25 ©   (02.07.04 12:23) [40]
>А кто мешает написать...

А это уже "KodPl будет анализироваться дважды"
:)

>Просто [17] работает быстрее

Разумно ли экономить на спичках в данном случае ?


 
Курдль ©   (2004-07-02 12:27) [42]


> Sandman25 ©   (02.07.04 12:23) [40]
> [39] Johnmen ©   (02.07.04 12:19)
>
> А кто мешает написать
> select sum(case kodpl when "П" then Summ when "Р" -Summ
>  else 0 end)
> from table

АднАзнАчнА!!! Просто лень было подумать :) Но ведь насколько лучше, чем варивнты с ХП, ХЗ и ТП?!


 
Sandman25 ©   (2004-07-02 12:30) [43]

ср.
if FieldByName("kodPl").AsInteger = 1 then
 ...
// без else!
if FieldByName("kodPl").AsInteger = 2 then
 ..

и
case FieldByName("kodPl").AsInteger of
 1: ...
 2: ...

во втором случае анализируется либо 1 либо 2 раза, причем нет второго обращения к DataSet. Даже если оптимизатор заменяет первый случай на
LocalVar := FieldByName("kodPl").AsInteger;
if LocalVar = 1 then
 ...
// без else!
if LocalVar = 2 then

все равно имеем проигрыш из-за того, что сравнений в среднем 2, а не 1.5 как в моем варианте :)


 
Danilka ©   (2004-07-02 12:40) [44]

как не самый лучший вариант, чтобы не учитывать "О":

select sum(case when when kodpl="П" then Summ else -Summ end)
from table t1
where exists (select 1 from table where id = t1.id and kodpl in ("П", "Р"))

:))


 
Соловьев ©   (2004-07-02 12:43) [45]


> чтобы не учитывать "О":

select sum(case when when kodpl="П" then Summ where kodpl="Р" then -Summ end)
from table


 
Соловьев ©   (2004-07-02 12:47) [46]

Вот так правильно:
select sum(case kodpl when "П" then Summ when "Р" then Summ -Summ end)
from table



Страницы: 1 2 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.031 c
1-1089370285
leonidus
2004-07-09 14:51
2004.07.25
Как создать ярлык в Пуск>Меню>Моя программа?


1-1089550907
buk
2004-07-11 17:01
2004.07.25
Все формы разом


14-1089110984
Rule
2004-07-06 14:49
2004.07.25
Всем привет с того света ...


14-1089111495
wnew
2004-07-06 14:58
2004.07.25
Скрытые функции в Delphi


1-1089721797
BillyJeans
2004-07-13 16:29
2004.07.25
TreeView и ScrollBars