Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизПроблема с запросом Найти похожие ветки
← →
VadimSpb (2005-12-28 10:16) [0]Добрый день!
Подскажите, как составить запрос.
1. Есть таблица с полями "Дата" и "Платеж". Надо получить НД с полями "Дата" и "Сумма всех платежей внесенных до этой даты"
2. Есть таблица с полями "Дата подключения" и "Дата отключения". Надо получить НД с Общим кол-вом абонентов на дату, число подключенных и число отключенных на дату.
Если возможно киньте примерчик с аналогичными вариантами.
← →
Johnmen © (2005-12-28 10:28) [1]Вопросы поставлены некоорректно. Отсутствует группирующий признак, т.е. кем внесены платежи, например.
Для полной формализации вопроса просто приведи пример исходных данных и пример НД, который надо получить.
← →
Lexer © (2005-12-28 10:32) [2]1. Есть таблица с полями "Дата" и "Платеж". Надо получить НД с полями "Дата" и "Сумма всех платежей внесенных до этой даты"
Вопрос немного недопонял, если надо вывести все значения поля Дата из таблицы и на каждое значение подсчитать сумму то можно так:
SELECT T.date,
(SELECT SUM(TS.pay)
FROM TABLE TS
WHERE TS.date <= T.DATE) sum_to_date
FROM TABLE T
2. Есть таблица с полями "Дата подключения" и "Дата отключения". Надо получить НД с Общим кол-вом абонентов на дату, число подключенных и число отключенных на дату.
ИМХО лучше всего написать хранимку (конечно если СУБД позволяет), в которой подсчитывать эти три значения след. образом:
SELECT COUNT(T.date_connect),
FROM TABLE T
WHERE T.date_connect IS NOT NULL
AND T.date_connect <= :date_to
SELECT COUNT(T.date_disconnect),
FROM TABLE T
WHERE T.date_disconnect IS NOT NULL
AND T.date_disconnect <= :date_to
count_connect = date_connect - date_disconnect
← →
VadimSpb (2005-12-28 10:46) [3]Таблица1.
Дата Платеж IDАбонента
01.01.2005 100 01
05.01.2005 150 02
07.01.2005 50 03
Надо получить НД:
Дата Сумма
01.01.2005 100
02.01.2005 100
03.01.2005 100
04.01.2005 100
05.01.2005 250
06.01.2005 250
07.01.2005 300
Таблица 2.
Дата подкл. Дата откл. IDАбонента
01.01.2005 03.01.2005 01
05.01.2005 07.01.2005 01
09.01.2005 01
01.01.2005 02
03.01.2005 03
Надо получить НД:
Дата Всего Число подкл. Число откл.
01.01.2005 2 2 0
02.01.2005 2 2 0
03.01.2005 3 3 0
04.01.2005 3 2 1
05.01.2005 3 3 0
06.01.2005 3 3 0
07.01.2005 3 2 1
08.01.2005 3 2 1
09.01.2005 3 3 0
← →
Lexer © (2005-12-28 10:49) [4]VadimSpb, СУБД уточнить можно?
← →
Виталий Панасенко (2005-12-28 10:49) [5]1. select t.date_pay, sum(t.sym_pay) as summa from table t
where t.date_pay between "date1" and "date2"
group by t.date_pay
← →
Johnmen © (2005-12-28 10:52) [6]Понятно.
Придётся извращаться, чтобы получить в результирующем НД данные, которых нет в источнике. Имеются в виду даты.
Навскидку - создаётся временная таблица с датами, потом выполняется запрос, где будет соединение этой тбл с исходной тбл.
← →
VadimSpb (2005-12-28 10:57) [7]
Придётся извращаться
Вот и стараюсь ... и таблицы временные делал, насколько Access позволяет :-((. Получается очень долго. Записей в первой табл. несколько сот тыс., во второй до 100 тыс.
Все это надо вывести в график. Может все даты и не нужны, а DBChart сам с ними разберется?
← →
Johnmen © (2005-12-28 11:27) [8]Сначала попробуй, как будет на существующих датах. Пример Lexer уже привёл.
← →
VadimSpb (2005-12-28 16:21) [9]
VadimSpb, СУБД уточнить можно?
Acces через Jet.
← →
VadimSpb (2005-12-28 16:25) [10]Виталий Панасенко (28.12.05 10:49) [5]
1. select t.date_pay, sum(t.sym_pay) as summa from table t
where t.date_pay between "date1" and "date2"
group by t.date_pay
Где предполагается взять "date1" and "date2"?
← →
ЮЮ © (2005-12-29 03:06) [11]>Где предполагается взять "date1" and "date2"?
Да уж придумай где. Или полагашь, что и в 2007 году кого-то ежедневно будут интересовать твои строки за январь 2005? Более того, чем больше будет "дней" в запросе, тем тяжелее он будет выполняться.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c