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

Вниз

Помогите пожалуйста с запросом   Найти похожие ветки 

 
MZG   (2008-10-07 21:16) [0]

Здравствуйте!

Мастера, помогите пожалуйста с запросом. Есть таблица, в ней всего два поля: Дата и Сумма.
Как можно пробежаться по датам в цикле для расчета суммы за период?
Мне необходимо например: с 01.01.2008 по 01.03.2008 вычислить сумму по полю "Сумма". Подскажите пожалуйста, как это можно сделать?


 
Palladin ©   (2008-10-07 21:18) [1]

в чем затруднения?


 
MZG   (2008-10-07 21:23) [2]

Если брать рализацию select summa from MyTable where data = дата - то получается без проблем. Я не могу понять, как правильно брать в цикл.

Тока щас в голову пришла мысль
select summa from MyTable where (data = 01.01.2008) and (data<=01.03.2008).

Мастера, что не так? Где и как копаться?


 
Anatoly Podgoretsky ©   (2008-10-07 21:32) [3]

> MZG  (07.10.2008 21:23:02)  [2]

sum(summa)


 
MZG   (2008-10-07 21:36) [4]

Анатолий, я про суммирование знаю. Спасибо за помощь.
Я не могу указать интервал дастю. Мне нужно взять за 3 мес, за 6 мес и за год. Подскажите пожалуйста!
C SQL начинаю дружить, но вот сталкнулся с тким вопросом и не знаю что и как дальше.......:(


 
palva ©   (2008-10-07 22:09) [5]

Для интервала можно использовать BETWEEN
А вот как задать в команде дату - трудный вопрос. Вам придется рассказать какой сервер вы используете.


 
MZG   (2008-10-07 22:19) [6]

Я просто на Delphi с использованием стандартных компонентов SQL


 
palva ©   (2008-10-07 22:36) [7]

Тогда логичнее использовать параметры и тип делфи TDateTime.
Вообще как-то странно интересоваться SQL и не пробовать на нем работать.


 
Германн ©   (2008-10-08 00:52) [8]


> MZG   (07.10.08 22:19) [6]
>
> Я просто на Delphi с использованием стандартных компонентов
> SQL
>

"Туман, туман. Сплошная пелена."
(с) Хорошая песня из хорошего фильма


> palva ©   (07.10.08 22:09) [5]
>
> Для интервала можно использовать BETWEEN

Новичку очень трудно указать интервал дат для BETWEEN. Последний день месяца.


 
Alex7   (2008-10-08 07:23) [9]

Текст запроса: SELECT SUM(summa) FROM MyTable where (data BETWEEN :DateBegin AND :DateEnd)

Открытие датасета:

var j:Integer;
d1, d2 :TDateTime;
begin
DateSeparator:=".";
if TryStrToDate(Edit1.Text,d1)
   and TryStrToDate(Edit2.Text,d2) then
 with MyADODataSet do begin
  for j:=0 to 1 do Parameters[j].DataType := ftDate;
  Parameters[0].Value := d1;
  Parameters[1].Value := d2;
  Open;
 end;


 
Василий Жогарев ©   (2008-10-08 07:59) [10]

SELECT     M, SUMMA
FROM         (SELECT     Y, M, SUM(SUMMA) AS SUMMA
                      FROM          (SELECT     YEAR(DATA) AS Y, MONTH(DATA) AS M, DAY(DATA) AS D, SUMMA
                                              FROM          Table1) AS t
                      GROUP BY Y, M) AS d
WHERE     (Y = 2008) AND (M >= 1 AND M <= 3)
:)))

_________________________________________________________________
WinXP, MS SQL 2005


 
Правильный$Вася   (2008-10-08 12:01) [11]


> Василий Жогарев ©   (08.10.08 07:59) [10]

извращение какое-то
особенно после того, как автор указал, что у него явно не мскуль
зачем выпендриваться?

> where (data = 01.01.2008) and (data<=01.03.2008)

это может дать только 1 день, 1 января, т.к. дата не может быть равна другому дню и одновременно равна 1 января
так что ставь либо BETWEEN, либо <= с обеих сторон


 
MZG   (2008-10-08 22:23) [12]

Вечера доброго!

Ребят, извиняй, но чего-то я не понимаю в следующем коде, приведенного Василием.


SELECT M, SUMMA
FROM    (SELECT     Y, M, SUM(SUMMA) AS SUMMA
FROM    (SELECT     YEAR(DATA) AS Y, MONTH(DATA) AS M, DAY(DATA) AS D, SUMMA  FROM  Table1) AS t
GROUP BY Y, M) AS d WHERE     (Y = 2008) AND (M >= 1 AND M <= 3)


Этот код я поместил в Query1 и на исполнении ругается на строку 2, т.е.
FROM (SELECT     Y, M, SUM(SUMMA) AS SUMMA

Напомню, что мне нужно научиться реализовывать запрос - подсчет суммы за указанный перод. Ради примера взял интервал на квартал - 3 месяца.

Помогите пожалуйста, разобраться :)


 
Johnmen ©   (2008-10-08 22:36) [13]

Ты вообще читаешь, что тебе говорят?
Ну кроме бреда от Василия?


 
MZG   (2008-10-08 23:07) [14]

Вроде получилось :)
Запрос с использованием OR
select sum(summa) from mytable where (data<=01.01.2008) or (03.01.2008)

Всё работает как часы!!!! :)))


 
Германн ©   (2008-10-09 00:10) [15]


> Вроде получилось :)
> Запрос с использованием OR
> select sum(summa) from mytable where (data<=01.01.2008)
> or (03.01.2008)
>
> Всё работает как часы!!!! :)))
>

Не верю!


 
Правильный$Вася   (2008-10-09 11:34) [16]


> Всё работает как часы!!!!

ага, песочные, с 2 песчинками
после чего останавливаются и вводят юзера в недоумение



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

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

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1221991549
Кое кто
2008-09-21 14:05
2008.11.16
Скачивалка


2-1222891466
Александр325
2008-10-02 00:04
2008.11.16
Ошибка при определении процедуры


13-1122384993
Середкин
2005-07-26 17:36
2008.11.16
Динамическая разработка шаблонов серверных элементов управления


2-1223545575
aslanbek
2008-10-09 13:46
2008.11.16
Узнать путь файла


15-1221631697
infom
2008-09-17 10:08
2008.11.16
Найти угол между векторами.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский