|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Приветствую, коллеги! Давно не писал ничего, но тут появилась бизнес-задача, уперся в проблему. Пригодится подсказка! Ситуация: есть xlsx, содержащий массив дат с компаниями и ценами, даты могут повторяться. Я подключаюсь к нему через ADO и забираю даты: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Теперь мне нужно в получившемся отсортированном массиве данных взять каждые 7 последовательных дат, и произвести вычисления над всеми записями в каждом таком диапазоне дат. Поскольку Row_Number() тут не работает, подскажите пожалуйста какой-нибудь алгоритм, а то уже совсем уткнулся. Получаю в рекордсет: Дата01.01.201302.01.201303.01.201304.01.201305.01.201306.01.201307.01.201308.01.201309.01.201310.01.201311.01.201312.01.201313.01.201314.01.201315.01.201316.01.201317.01.201318.01.201319.01.201320.01.201321.01.2013 Нужно Дата СДата По Вычисленный столбец01.01.2013 07.01.20131234.4408.01.201314.01.2013543.115.01.201321.01.2013432.14 Можно как-то джойнить рекордсет к запросу? ;) Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 20:53 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Eugene_p1Приветствую, коллеги! Давно не писал ничего, но тут появилась бизнес-задача, уперся в проблему. Пригодится подсказка! Ситуация: есть xlsx, содержащий массив дат с компаниями и ценами, даты могут повторяться. Я подключаюсь к нему через ADO и забираю даты: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Теперь мне нужно в получившемся отсортированном массиве данных взять каждые 7 последовательных дат, и произвести вычисления над всеми записями в каждом таком диапазоне дат. Поскольку Row_Number() тут не работает, подскажите пожалуйста какой-нибудь алгоритм, а то уже совсем уткнулся. Получаю в рекордсет: Дата01.01.201302.01.201303.01.201304.01.201305.01.201306.01.201307.01.201308.01.201309.01.201310.01.201311.01.201312.01.201313.01.201314.01.201315.01.201316.01.201317.01.201318.01.201319.01.201320.01.201321.01.2013 Нужно Дата СДата По Вычисленный столбец01.01.2013 07.01.20131234.4408.01.201314.01.2013543.115.01.201321.01.2013432.14 Можно как-то джойнить рекордсет к запросу? ;) Спасибо! Select в Select ни как? Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 21:08 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
авторвзять каждые 7 последовательных дат "7 последовательных дат" - это не неделя слуйно ? если да, то посчитать можно в запросе с группировкой по номеру недели, типа такого Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2015, 21:55 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Коллеги, спасибо за комментарии. Нет, 7 дней - это произвольный интервал, и он будет меняться. SELECT на SELECT - это очевидно, разумеется, так и будет. Только что написать во внешнем SELECT'е? ROW_NUMBER() не поддерживается. Как мне пронумеровать даты (сложность в этом)? Это не календарь - нескольких дат может не быть. Нумеруются именно присутствующие в выборке. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 11:15 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
А можно ли присоединить к запросу recordset? Код: sql 1. 2.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 11:19 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
А select top 7 чем не устраивает? Выбрали первые семь дат, запомнили последнюю, выбрали первые семь после запомненной и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 12:47 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Eugene_p1Нет, 7 дней - это произвольный интервал, и он будет меняться. ""произвольный интервал" - в смысле, он не обязательно с понедельника ? "в интервале всегда 7мь дней ? если "да": у функции datepart, 3ий параметр определяет с какого дня недели начинается неделя, вот 2ка тут - это понедельник - datepart("ww", Дата, 2) вот, если, например, первый интервал начинается с мин.даты в диапазоне, то определяете эту мин дату, - определяете какой это день недели, - и динамически строите запрос, с параметром в datepart соотв.этому дню недели ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 13:02 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Eugene_p1Теперь мне нужно в получившемся отсортированном массиве данных взять каждые 7 последовательных дат, и произвести вычисления над всеми записями в каждом таком диапазоне дат. А вар-т сделать в экселе производную таблицу с атрибутом номера х-дневного интервала и потом уже с этой таблицей все дела делать не подойдет? Тупо столбик добавить для 01.01.2013 - 07.01.2013 rank= 1, 01.08.2013 - 14.01.2013 rank= 2 и тд? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 14:20 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
гр кА вар-т сделать в экселе производную таблицу с атрибутом номера х-дневного интервала и потом уже с этой таблицей все дела делать не подойдет? Тупо столбик добавить для 01.01.2013 - 07.01.2013 rank= 1, 01.08.2013 - 14.01.2013 rank= 2 и тд? К сожалению, так и пришлось сделать. И к сожалению, теперь нужно делать перебор интервалов и выполнение подзапроса по каждому из них. Ожидаю, что будет медленно, но пока другого решения не нашел. Засада еще одна - в подзапросе нужно брать i-й элемент, скажем i = CInt(Count(*)*1/4), i = CInt(Count(*)*3/4). Вот что с этим делать - вообще ума не приложу. Пока что. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:46 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
datepart wwу функции datepart, 3ий параметр определяет с какого дня недели начинается неделя, вот 2ка тут - это понедельник - datepart("ww", Дата, 2) Этот алгоритм не подходит, т.к. интервал может быть 3, 5, 4, 10, и т.д., а даты идут произвольным массивом, т.е. могут быть не подряд. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:48 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Eugene_p1, днные для вычислений можешь получить в одном запросе с датами ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 20:46 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
скукотищаEugene_p1, днные для вычислений можешь получить в одном запросе с датами ? Да. Но даты я получаю с DISTINCT, т.к. в одну дату может быть несколько строк с данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2015, 12:22 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
> Eugene_p1, > Но даты я получаю с DISTINCT, т.к. ... Можно выбирать записи полностью, а не только даты. Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2015, 16:00 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
скукотища, Хммм. Спасибо за наводку! Буду иметь в виду, тк работать еще и работать. В текущем виде реализовал так: Сгруппированные даты отдельным запросом. Данные анализируются накладыванием фильтра на дату, и прохождением по отфильтрованным строкам для каждой даты. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2015, 13:10 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Усложнили задачу. Год нужно разбить на интервалы в Х дней (значение меняется), и собирать записи между ними. Что посоветуете? Первый интервал получить просто: Код: sql 1.
Как размножить интервалы? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2015, 18:14 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
наводка Код: sql 1. 2. 3. 4.
(в сам топик не вчитывался, сорри, если не по теме) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2015, 18:28 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Уточню вопрос. Как написать это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
на понятном для Access SQL языке? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2015, 18:32 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
Shocker.Proнаводкапоправочка (а то первый интервал неверный получается) Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2015, 18:45 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
> Eugene_p1, > Уточню вопрос. > Как написать это: > {многабукав} чтобы потом опять соединять полученный набор записей с таблицей данных ? Предложение 17245217 остаётся в силе. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2015, 21:18 |
|
Выборка дат с использованием ADO
|
|||
---|---|---|---|
#18+
скукотища, Чёрт возьми! Есть тут рациональное зерно! :) Спасибо, я подумаю ещё раз, получше! :) (на самом деле, эххх, если бы задачи ставились сразу и чётко...) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 12:20 |
|
|
start [/forum/topic.php?fid=61&msg=38881056&tid=2173634]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 287ms |
total: | 420ms |
0 / 0 |