Форум: "Начинающим";
Текущий архив: 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]Вроде получилось :)
Запрос с использованием ORselect 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