Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Вниз

SQL с использованием цыклов и переменных   Найти похожие ветки 

 
DelphiN!   (2008-02-27 12:43) [0]

Необходимо написать 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


 
ANB   (2008-02-27 12:55) [1]

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


 
Johnmen ©   (2008-02-27 13:31) [2]

Опять ты со своим мутным вопросом...:(
Пиши хранимую процедуру, и в ней извращайся, как тебе надо.

ЗЫ
Рассчитывать, что за тебя её напишут, не стОит.


 
Правильный_Вася   (2008-02-27 13:34) [3]


> Опять ты со своим мутным вопросом...:(

только периоды уже не недельные, а пятидневные


 
Anatoly Podgoretsky ©   (2008-02-27 22:28) [4]

> Правильный_Вася  (27.02.2008 13:34:03)  [3]

Может доживем до однодневных.


 
korneley ©   (2008-02-27 22:43) [5]


> только периоды уже не недельные, а пятидневные

...

> Может доживем до однодневных.

А какая разница, если в SQL поставить  "BETWEEN"?


 
Правильный_Вася   (2008-02-27 22:55) [6]


> А какая разница

да скоро будет сравнение пересекающихся периодов


 
korneley ©   (2008-02-27 23:10) [7]


> да скоро будет сравнение пересекающихся периодов

А ни фига не страшно! (ну, если так по жизни кому-то надо). Два запроса с разными крайними датами ( и сохранением первого результата), плюс разница между ними. Это если на клиенте. А уж хранимой процедурой... Любые четыре даты входящими параметрами - любая "RAZNICA" Вопрос легитимности дат - на совести подающего.


 
Amoeba ©   (2008-02-27 23:23) [8]


> цыклов

Я плакалЪ!


 
korneley ©   (2008-02-27 23:27) [9]


> Amoeba ©   (27.02.08 23:23) [8]

Это от слова "цыкнуть". Ну, зубом, или ещё чем... :)


 
Amoeba ©   (2008-02-27 23:29) [10]

Цыган встал на цыпочки и сказал цыпленку цыц!

Смотрю и вижу - чем моложе писатель, тем больше у него проблем с орфографией.


 
Игорь Шевченко ©   (2008-02-28 00:02) [11]


> Смотрю и вижу - чем моложе писатель, тем больше у него проблем
> с орфографией.


Это не от возраста зависит


 
Amoeba ©   (2008-02-28 00:33) [12]


> Игорь Шевченко ©   (28.02.08 00:02) [11]
>
>
> > Смотрю и вижу - чем моложе писатель, тем больше у него
> проблем
> > с орфографией.
>
>
> Это не от возраста зависит
>

Но корреляция есть.


 
DelphiN!   (2008-02-28 05:31) [13]

Я не знаю как заполнять первый столбец, тоесть как прибавлять к какой-то переменной по 5 дней и каждый раз выводить ее значение


 
DelphiN!   (2008-02-28 05:44) [14]


> Johnmen ©   (27.02.08 13:31) [2]


А где именно ее писать? В IbExpert-e не нашел, наверное конечно плохо искал, но все-же где?

Или может подскажете литературу на русском где описывается синтаксис FireBird SQL и способы создания и использования хранимых процедур


 
DelphiN!   (2008-02-28 06:42) [15]

Нде писать процедуры нашел, написал пробную процедуру, на вкладке 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 07:00) [16]

Разобрался, не поставил SUSPEND;
Спасибо всем, буду разбираться с процедурами ...


 
Amoeba ©   (2008-02-28 10:17) [17]


> 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


 
Anatoly Podgoretsky ©   (2008-02-28 15:05) [18]

> Игорь Шевченко  (28.02.2008 00:02:11)  [11]

От возраста, просто у некоторых возраст стабилизируется в раннем детстве.
Инфантильность, дебильность и прочие сть.


 
Anatoly Podgoretsky ©   (2008-02-28 15:06) [19]

> DelphiN!  (28.02.2008 05:31:13)  [13]

Ладно сжалимся, сложение (прибавлять) делается оператором плюс, а присвоение оператором две точки/равно



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

Форум: "Начинающим";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.045 c
2-1204460411
KJ13
2008-03-02 15:20
2008.03.30
Открытие файла


2-1204209428
максим
2008-02-28 17:37
2008.03.30
hex


15-1203023268
Petr V. Abramov
2008-02-15 00:07
2008.03.30
как получить авто (или бытовой) кредит


2-1204396513
La-la-Land
2008-03-01 21:35
2008.03.30
Реестр. Как работать?


2-1204474078
switch
2008-03-02 19:07
2008.03.30
Перемещение по картинкам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский