![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите пожалуйста с запросом [D7, XP]
MZG © (2008-10-07 21:16:00)Здравствуйте!
Мастера, помогите пожалуйста с запросом. Есть таблица, в ней всего два поля: Дата и Сумма.
Как можно пробежаться по датам в цикле для расчета суммы за период?
Мне необходимо например: с 01.01.2008 по 01.03.2008 вычислить сумму по полю "Сумма". Подскажите пожалуйста, как это можно сделать?
Правильный$Вася (2008-10-09 11:34:00) [1]
> Всё работает как часы!!!!
ага, песочные, с 2 песчинками
после чего останавливаются и вводят юзера в недоумение
Германн (2008-10-09 00:10:00) [2]
> Вроде получилось :)
> Запрос с использованием OR
> select sum(summa) from mytable where (data<=01.01.2008)
> or (03.01.2008)
>
> Всё работает как часы!!!! :)))
>
Не верю!
MZG (2008-10-08 23:07:00) [3]Вроде получилось :)
Запрос с использованием OR
select sum(summa) from mytable where (data<=01.01.2008) or (03.01.2008)
Всё работает как часы!!!! :)))
Johnmen (2008-10-08 22:36:00) [4]Ты вообще читаешь, что тебе говорят?
Ну кроме бреда от Василия?
MZG (2008-10-08 22:23:00) [5]Вечера доброго!
Ребят, извиняй, но чего-то я не понимаю в следующем коде, приведенного Василием.
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 месяца.
Помогите пожалуйста, разобраться :)
Правильный$Вася (2008-10-08 12:01:00) [6]
> Василий Жогарев © (08.10.08 07:59) [10]
извращение какое-то
особенно после того, как автор указал, что у него явно не мскуль
зачем выпендриваться?
> where (data=01.01.2008) and (data<=01.03.2008)
это может дать только 1 день, 1 января, т.к. дата не может быть равна другому дню и одновременно равна 1 января
так что ставь либо BETWEEN, либо <= с обеих сторон
Василий Жогарев (2008-10-08 07:59:00) [7]
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
Alex7 (2008-10-08 07:23:00) [8]Текст запроса: 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 00:52:00) [9]
> MZG (07.10.08 22:19) [6]
>
> Я просто на Delphi с использованием стандартных компонентов
> SQL
>
"Туман, туман. Сплошная пелена."
(с) Хорошая песня из хорошего фильма
> palva © (07.10.08 22:09) [5]
>
> Для интервала можно использовать BETWEEN
Новичку очень трудно указать интервал дат для BETWEEN. Последний день месяца.
palva (2008-10-07 22:36:00) [10]Тогда логичнее использовать параметры и тип делфи TDateTime.
Вообще как-то странно интересоваться SQL и не пробовать на нем работать.
MZG (2008-10-07 22:19:00) [11]Я просто на Delphi с использованием стандартных компонентов SQL
palva (2008-10-07 22:09:00) [12]Для интервала можно использовать BETWEEN
А вот как задать в команде дату - трудный вопрос. Вам придется рассказать какой сервер вы используете.
MZG (2008-10-07 21:36:00) [13]Анатолий, я про суммирование знаю. Спасибо за помощь.
Я не могу указать интервал дастю. Мне нужно взять за 3 мес, за 6 мес и за год. Подскажите пожалуйста!
C SQL начинаю дружить, но вот сталкнулся с тким вопросом и не знаю что и как дальше.......:(
Anatoly Podgoretsky (2008-10-07 21:32:00) [14]> MZG (07.10.2008 21:23:02) [2]
sum(summa)
MZG (2008-10-07 21:23:00) [15]Если брать рализацию select summa from MyTable where data = дата - то получается без проблем. Я не могу понять, как правильно брать в цикл.
Тока щас в голову пришла мысль
select summa from MyTable where (data = 01.01.2008) and (data<=01.03.2008).
Мастера, что не так? Где и как копаться?
Palladin (2008-10-07 21:18:00) [16]в чем затруднения?