Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Написать можно.
На оракле быстро, для ФБ - не умею.


Наверх

Титульная страница Поиск, карта сайта Написать письмо