Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
14-1135771898
Arazel
2005-12-28 15:11
2006.01.22
У кого есть драйвер VWIN32 пожалуйста скиньте...


14-1135896255
версия для печати
2005-12-30 01:44
2006.01.22
В бобруйск на зимние каникулы...


2-1136486058
Alexander2006
2006-01-05 21:34
2006.01.22
Запуск службы "Messenger"


14-1135663833
Котик Б
2005-12-27 09:10
2006.01.22
Смотрел намедни фильм "Юлия"


14-1136040935
Kolan
2005-12-31 17:55
2006.01.22
Всех с наступающим :)