![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL с использованием цыклов и переменных
DelphiN! © (2008-02-27 12:43:00)Необходимо написать SQL выводящий сравнение выручки по периодам.
Дан период в кол-ве дней(например: 5) и период составления отчета, например : 05.01.2008 - 01.02.2008
Результат SQL запроса должен выглядеть следующим образом :
PERIOD
05.01.2008 - 10.01.2008
10.01.2008 - 15.01.2008
...
SUMM
500 000
1 000 000
...
PROSHLIY_PERIOD
250 000
500 000
...
RAZNICA
-50%
50%
...
Жирным выделены имена столбцов, далее идут значения. В столбце PROSHLIY_PERIODвыводится выручка за прошлый период, тоесть для периода05.01.2008 - 10.01.2008прошлый период будет01.01.2008 - 05.01.2008. В столбце RAZNICAвыводится процентная разница между текущим и прошлым периодом.
Можно ли такое написать средствами SQL? Если да то как?
FireBird 1.5 Dialect 3
Anatoly Podgoretsky (2008-02-28 15:06:00) [1]> DelphiN! (28.02.2008 05:31:13) [13]
Ладно сжалимся, сложение (прибавлять) делается оператором плюс, а присвоение оператором две точки/равно
Anatoly Podgoretsky (2008-02-28 15:05:00) [2]> Игорь Шевченко (28.02.2008 00:02:11) [11]
От возраста, просто у некоторых возраст стабилизируется в раннем детстве.
Инфантильность, дебильность и прочие сть.
Amoeba (2008-02-28 10:17:00) [3]
> DelphiN! (28.02.08 05:44) [14]
>
>
> > Johnmen © (27.02.08 13:31) [2]
>
>
> А где именно ее писать? В IbExpert-e не нашел, наверное
> конечно плохо искал, но все-же где?
>
> Или может подскажете литературу на русском где описывается
> синтаксис FireBird SQL и способы создания и использования
> хранимых процедур
>
http://www.delphikingdom.com/asp/book.asp?bookID=219
http://www.delphikingdom.com/asp/book.asp?bookID=251
DelphiN! (2008-02-28 07:00:00) [4]Разобрался, не поставил SUSPEND;
Спасибо всем, буду разбираться с процедурами ...
DelphiN! (2008-02-28 06:42:00) [5]Нде писать процедуры нашел, написал пробную процедуру, на вкладке DDL процедуры в IbExpert-e появилось следующее :
SET TERM ^ ;
CREATE OR ALTER PROCEDURE LIST_STATES
returns (
result integer)
as
begin
result = 5*5;
end^
SET TERM ; ^
GRANT EXECUTE ON PROCEDURE LIST_STATES TO SYSDBA;
Далее пытаюсь ее вызватьselect result from LIST_STATES
В результате получаю значение NULL вместо 25. В чем дело?
DelphiN! (2008-02-28 05:44:00) [6]
> Johnmen © (27.02.08 13:31) [2]
А где именно ее писать? В IbExpert-e не нашел, наверное конечно плохо искал, но все-же где?
Или может подскажете литературу на русском где описывается синтаксис FireBird SQL и способы создания и использования хранимых процедур
DelphiN! (2008-02-28 05:31:00) [7]Я не знаю как заполнять первый столбец, тоесть как прибавлять к какой-то переменной по 5 дней и каждый раз выводить ее значение
Amoeba (2008-02-28 00:33:00) [8]
> Игорь Шевченко © (28.02.08 00:02) [11]
>
>
> > Смотрю и вижу - чем моложе писатель, тем больше у него
> проблем
> > с орфографией.
>
>
> Это не от возраста зависит
>
Но корреляция есть.
Игорь Шевченко (2008-02-28 00:02:00) [9]
> Смотрю и вижу - чем моложе писатель, тем больше у него проблем
> с орфографией.
Это не от возраста зависит
Amoeba (2008-02-27 23:29:00) [10]Цыган встал на цыпочки и сказал цыпленку цыц!
Смотрю и вижу - чем моложе писатель, тем больше у него проблем с орфографией.
korneley (2008-02-27 23:27:00) [11]
> Amoeba © (27.02.08 23:23) [8]
Это от слова "цыкнуть". Ну, зубом, или ещё чем... :)
Amoeba (2008-02-27 23:23:00) [12]
> цыклов
Я плакалЪ!
korneley (2008-02-27 23:10:00) [13]
> да скоро будет сравнение пересекающихся периодов
А ни фига не страшно! (ну, если так по жизни кому-то надо). Два запроса с разными крайними датами ( и сохранением первого результата), плюс разница между ними. Это если на клиенте. А уж хранимой процедурой... Любые четыре даты входящими параметрами - любая " RAZNICA" Вопрос легитимности дат - на совести подающего.
Правильный_Вася (2008-02-27 22:55:00) [14]
> А какая разница
да скоро будет сравнение пересекающихся периодов
korneley (2008-02-27 22:43:00) [15]
> только периоды уже не недельные, а пятидневные
...
> Может доживем до однодневных.
А какая разница, если в SQL поставить "BETWEEN"?
Anatoly Podgoretsky (2008-02-27 22:28:00) [16]> Правильный_Вася (27.02.2008 13:34:03) [3]
Может доживем до однодневных.
Правильный_Вася (2008-02-27 13:34:00) [17]
> Опять ты со своим мутным вопросом...:(
только периоды уже не недельные, а пятидневные
Johnmen (2008-02-27 13:31:00) [18]Опять ты со своим мутным вопросом...:(
Пиши хранимую процедуру, и в ней извращайся, как тебе надо.
ЗЫ
Рассчитывать, что за тебя её напишут, не стОит.
ANB (2008-02-27 12:55:00) [19]Написать можно.
На оракле быстро, для ФБ - не умею.