Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Накопительный график? / 10 сообщений из 10, страница 1 из 1
10.11.2004, 10:54:07
    #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
10.11.2004, 11:20:32
    #32775014
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный график?
FAQ - ну почему так трудно сначала поискать....

А потом уж любой график делайте.
...
Рейтинг: 0 / 0
10.11.2004, 13:21:15
    #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
11.11.2004, 11:06:43
    #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
11.11.2004, 11:17:25
    #32776985
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный график?
а что ,данные за прошлые периоды могут быть изменены,если нет - то принято хранить промежуточные результаты и пересчитывать последний интервал.В бухгалтерии этот приём называется отчётный период.
...
Рейтинг: 0 / 0
11.11.2004, 11:59:49
    #32777164
GliderAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный график?
А каким образом это организовать?
У меня проект adp + MS SQL Server2000
...
Рейтинг: 0 / 0
12.11.2004, 03:15:53
    #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
12.11.2004, 03:17:54
    #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
12.11.2004, 03:34:03
    #32778619
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накопительный график?
Всё-таки не совсем то, но следуя в этом направлении можно добится цели.
Если не сможешь пиши.
...
Рейтинг: 0 / 0
15.11.2004, 07:25:00
    #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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Накопительный график? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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