powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Накопительный график?
10 сообщений из 10, страница 1 из 1
Накопительный график?
    #32774933
GliderAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть табличка
Код: plaintext
1.
2.
3.
4.
Дата-Время         Кол-во км
10.02.04  8:00           0
10.02.04 11:00          5
10.02.04 14:00          3
Ну и т.д. т.е. производительность линии... Таких данных аж за два года есть. Мне нужно накопительные графики сделать месячной производительности.
т.е. В мае например 2003 сделали за первый день
10 км, за два дня 10+13 за три 10+13+8 и т.д

В сводной диаграмме просто производительность по дням элементарно, а вот накопительный график как я не знаю((
...
Рейтинг: 0 / 0
Накопительный график?
    #32775014
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAQ - ну почему так трудно сначала поискать....

А потом уж любой график делайте.
...
Рейтинг: 0 / 0
Накопительный график?
    #32775376
GliderAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что то я никак не соображу как вот сюда накопительную сумму по Length вставить(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Select a.Id_Line, a.dtFirst, a.DtEnd, DATEDIFF(mi, a.dtFirst, a.DtEnd) AS time_of_oper, a.Length
FROM
(
  SELECT h.ID_Line,
         dtFirst = h.DateTime,
         dtEnd = ISNULL(
                        ( 
                         SELECT DATEADD(millisecond,- 1 ,MIN(h1.DateTime))
                         FROM tbl_ShiftProtocol h1 
                         WHERE h.ID_Line=h1.ID_Line AND h1.DateTime>h.DateTime
                        ),
                        h.DateTime
                       ),
Length=(h.Final_Length - h.Start_Length) /  1000 

  from tbl_ShiftProtocol h
) a
WHERE a.dtFirst < a.DtEnd
ORDER BY a.Id_Line, a.dtFirst, DtEnd
...
Рейтинг: 0 / 0
Накопительный график?
    #32776949
GliderAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дааа...
Сделал вот такие два запроса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
set dateformat dmy
declare @tbl_ShiftProtocol table(ID_Line int, DateTime datetime, Start_Length numeric, Final_Length numeric)
insert @tbl_ShiftProtocol 
select '1', '05.01.03 07:30', '0', '2000'
union all select '1','05.01.03 08:00', '1000', '2000'
union all select '1','05.01.03 08:45', '2000', '3000'
union all select '2','05.01.03 07:20', '0', '3000'
union all select '2','05.01.03 08:00', '500', '2000'
union all select '3','05.01.03 07:00', '0', '2000'
union all select '1','05.01.03 09:00', '4000', '5000'
union all select '1','05.01.03 09:20', '1000', '2000'
union all select '3','05.01.03 08:20', '2000', '3000'
union all select '1','05.01.03 09:35', '1200', '2000'
union all select '1','05.01.03 10:00', '1000', '2000'
union all select '1','05.01.03 10:45', '2000', '3000'
union all select '2','05.01.03 09:20', '0', '500'
union all select '2','05.01.03 10:00', '500', '2000'
union all select '3','05.01.03 09:00', '4000', '5000'
union all select '1','05.01.03 11:00', '4000', '5000'
union all select '1','05.01.03 11:20', '1000', '2000'
union all select '3','05.01.03 09:20', '2000', '3000'
union all select '1','05.01.03 12:35', '1200', '2000'
union all select '1','06.01.03 08:00', '1000', '3000'
union all select '1','06.01.03 08:45', '2000', '2000'
union all select '2','06.01.03 07:20', '0', '500'
union all select '2','06.01.03 08:00', '500', '2000'
union all select '3','06.01.03 07:00', '0', '1000'
union all select '1','06.01.03 09:00', '1000', '2000'
union all select '1','05.01.03 09:20', '1000', '2000'
union all select '3','06.01.03 08:20', '2000', '3000'
union all select '1','06.01.03 09:35', '1200', '3000'
union all select '1','06.01.03 10:00', '1000', '2000'
union all select '1','06.01.03 10:45', '2000', '4000'
union all select '2','06.01.03 09:20', '0', '2000'
union all select '2','06.01.03 10:00', '500', '2000'
union all select '3','06.01.03 09:00', '4000', '5000'

if exists(select object_id('tempdb..#t'))
drop table #t
--declare @tbl table(id int primary key,ID_Line int, DTfirst datetime, dtEnd datetime,time_of_oper numeric,Length numeric)
--insert into @tbl 

Select identity(int, 1 , 1 )as id,a.Id_Line, a.dtFirst, a.DtEnd, DATEDIFF(mi, a.dtFirst, a.DtEnd) AS time_of_oper, a.Length
into #t
FROM
(
  SELECT h.ID_Line,
         dtFirst = h.DateTime,
         dtEnd = ISNULL(
                        ( 
                         SELECT DATEADD(millisecond,- 1 ,MIN(h1.DateTime))
                         FROM @tbl_ShiftProtocol h1 
                         WHERE h.ID_Line=h1.ID_Line AND h1.DateTime>h.DateTime
                        ),
                        h.DateTime
                       ),
Length=(h.Final_Length - h.Start_Length) /  1000 

  from @tbl_ShiftProtocol h
) a
WHERE a.dtFirst < a.DtEnd
ORDER BY a.Id_Line, a.dtFirst, DtEnd

select a.id, a.ID_Line, max(a.Length) as length1, sum(isnull(b.Length,  0 ))+max(a.Length) as tot_lenght
from #t a 
left outer join #t b on b.id < a.id and b.ID_Line=a.ID_Line
group by a.id, a.ID_Line

Так на моих 70 000 записей только 20 000 обрабатывает 10 мин((
...
Рейтинг: 0 / 0
Накопительный график?
    #32776985
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что ,данные за прошлые периоды могут быть изменены,если нет - то принято хранить промежуточные результаты и пересчитывать последний интервал.В бухгалтерии этот приём называется отчётный период.
...
Рейтинг: 0 / 0
Накопительный график?
    #32777164
GliderAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А каким образом это организовать?
У меня проект adp + MS SQL Server2000
...
Рейтинг: 0 / 0
Накопительный график?
    #32778615
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правилно понял, то можно так...
Есть "Таблица1"
Date_Time _____|km
01.11.04 8:00:00 |1
01.11.04 8:01:00 |2
01.11.04 8:02:00 |3
02.11.04 8:12:00 |4
02.11.04 8:22:00 |5
02.11.04 8:32:00 |6
03.11.04 9:32:00 |7
03.11.04 18:32:00 |8
03.11.04 10:32:00 |9

Составим запрос...
Код: plaintext
1.
2.
SELECT Format([t1].[Date_Time],"dd\/mm\/yy") AS Даты, Sum(t1.km) AS Sum_km, (select sum(t2.km) from Таблица1 AS t2 where ((Format([t1].[Date_Time],"dd\/mm\/yy"))>=(Format([t2].[Date_Time],"dd\/mm\/yy"))) ) AS Sum_km_expansion
FROM Таблица1 AS t1
GROUP BY Format([t1].[Date_Time],"dd\/mm\/yy");

Получаем результат...
Даты_____|Sum_km__|Sum_km_expansion
01/11/04 _|6________|6
02/11/04 _|15_______|21
03/11/04 _|24_______|45

Кажется то, что нужно.
...
Рейтинг: 0 / 0
Накопительный график?
    #32778616
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правилно понял, то можно так...
Есть "Таблица1"
Date_Time _____|km
01.11.04 8:00:00 |1
01.11.04 8:01:00 |2
01.11.04 8:02:00 |3
02.11.04 8:12:00 |4
02.11.04 8:22:00 |5
02.11.04 8:32:00 |6
03.11.04 9:32:00 |7
03.11.04 18:32:00 |8
03.11.04 10:32:00 |9

Составим запрос...
Код: plaintext
1.
2.
SELECT Format([t1].[Date_Time],"dd\/mm\/yy") AS Даты, Sum(t1.km) AS Sum_km, (select sum(t2.km) from Таблица1 AS t2 where ((Format([t1].[Date_Time],"dd\/mm\/yy"))>=(Format([t2].[Date_Time],"dd\/mm\/yy"))) ) AS Sum_km_expansion
FROM Таблица1 AS t1
GROUP BY Format([t1].[Date_Time],"dd\/mm\/yy");

Получаем результат...
Даты_____|Sum_km__|Sum_km_expansion
01/11/04 _|6________|6
02/11/04 _|15_______|21
03/11/04 _|24_______|45

Кажется то, что нужно.
...
Рейтинг: 0 / 0
Накопительный график?
    #32778619
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё-таки не совсем то, но следуя в этом направлении можно добится цели.
Если не сможешь пиши.
...
Рейтинг: 0 / 0
Накопительный график?
    #32781520
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допёр...
Date_Time km
01.11.04 8:00:00 1
01.11.04 8:01:00 2
01.11.04 8:02:00 3
02.11.04 8:12:00 4
02.11.04 8:22:00 5
02.11.04 8:32:00 6
03.11.04 9:32:00 7
02.11.04 18:32:00 8
03.11.04 10:32:00 9
03.12.04 10:32:00 10
03.12.04 10:33:00 11
03.12.04 10:34:00 12
04.12.04 10:34:00 13
04.12.04 10:35:00 14
14.09.04 10:35:00 15
15.09.04 10:35:00 16
16.09.04 10:37:00 17

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT CDate(Format([t1].[Date_Time],"dd\/mm\/yy")) AS Даты, 
Sum(t1.km) AS Sum_km, (select sum(t2.km) from Таблица1 AS t2 
where ((cdate(Format([t1].[Date_Time],"dd\/mm\/yy")))>=(cdate(Format([t2].[Date_Time],"dd\/mm\/yy")))) 
and(cstr(Month ((CDate(Format([t1].[Date_Time], "dd\/mm\/yy"))))) & 
cstr(year ((CDate(Format([t1].[Date_Time], "dd\/mm\/yy")))))=
cstr(Month ((CDate(Format([t2].[Date_Time], "dd\/mm\/yy"))))) & 
cstr(year ((CDate(Format([t2].[Date_Time], "dd\/mm\/yy")))))))
 AS Sum_km_expansion
FROM Таблица1 AS t1
GROUP BY CDate(Format([t1].[Date_Time],"dd\/mm\/yy"));

Результат...
Даты Sum_km Sum_km_expansion
14.09.04 15 15
15.09.04 16 31
16.09.04 17 48
01.11.04 6 6
02.11.04 23 29
03.11.04 16 45
03.12.04 33 33
04.12.04 27 60
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Накопительный график?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]