Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.036 c