Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с построением сложного запроса. / 9 сообщений из 9, страница 1 из 1
20.01.2005, 14:11:47
    #32874769
glucke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
Не может ли кто-нибудь помочь с запросом?
У меня есть 2 таблицы:
Одна со списком названий акций. Во второй лежат цены этих акций на разные даты.

Надо: Чтобы из запроса выдовалось для каждой акции - последняя цена, дата последней цены, цена приблизительно за квартал до последней цены и дата.

Основная проблема: на дату ровно квартал назад, может не быть котировки, и надо выбрать ближайшую котировку. Очень желательно как-то реализовать это через SQL, а не VBA. Так как размер второй таблицы крайне велик(десятки тысяч записей), а насколько я знаю VBA работает медленее чем SQL.

Буду крайне благодарен за любую помощь
...
Рейтинг: 0 / 0
20.01.2005, 15:21:44
    #32875034
Bagin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
Ответ на часть вопроса есть тут:
http://sql.ru/forum/actualthread.aspx?tid=135145
...
Рейтинг: 0 / 0
21.01.2005, 00:44:38
    #32875958
glucke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
Спасибо за ссылку.
1)Это по поводу первой трети вопроса:Как напротив последней даты выводить цену ей соответствующую.
Сам я эту часть мене красиво делал, через 2 запроса, хотя по смыслу тоже направление.
2)Вторая треть: Это как вывести в одной строке максимальную дату с ценой ей соответствующей и дату на квартал меньше с ценой?(чтоб именно в одной строке, а НЕ две соседние строки(в одной на одну дату, в другой на вторую).
3)Третья, и самая сложная часть:Как при отсутствии даты(нет котировки на эту дату) ровно на квартал меньшей, найти ближайшую дату с котировкой?

Буду крайне благодарен за помощь с оставшимися 2/3 вопроса
...
Рейтинг: 0 / 0
21.01.2005, 10:54:08
    #32876462
Bagin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
В TSQL пригодится функция:
Код: plaintext
1.
2.
3.
DATEDIFF
Returns the number of date and time boundaries crossed between two specified dates. 
Syntax
DATEDIFF (datepart , startdate , enddate)
2) Слить с помощью UNION во временную таблицу, а потом сделать запрос из этой таблицы сгруппировав по коду акции и выбрать максимальное значение
3) В глову приходит такое:
MIN(ABS(1-DATEDIFF (qq , Дата , MAX(Дата))))

PS А лучше эти вопросы задать на форуме по MS SQL:
http://sql.ru/forum/actualtopics.aspx?bid=1
...
Рейтинг: 0 / 0
21.01.2005, 12:21:18
    #32876833
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
/topic/88919&pg=2#647540
...
Рейтинг: 0 / 0
21.01.2005, 15:08:05
    #32877473
glucke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
Огромнейшее спасибо за идею с тертьей частью вопроса, сделал. Теперь осталось решить 2 треть вопроса(сделать красивое оформление).

У меня осталась таблица с датами с шагом приблизительно в квартал(чтоб котировки были):

Акция Д1 Д2 Д3

А1 Д11 Д12 Д13
А2 Д21 Д22 Д23
А3 Д31 Д32 Д33

, где в столбце Д1 - последняя дата для каждой акции, в Д2 - дана на квартал меньшая, на которую есть котировка, в Д3 - на 2 квартала.

Хочется сделать запрос показывающий следующее:
Акция Д1 Д2 Д3

А1 Ц11 Ц12 Ц13
А2 Ц21 Ц22 Ц23
А3 Ц31 Ц32 Ц33

, где Цij - цена на дату Дij акции i

Мне удается добиться слишком некрасивого варианта:
Акция Д11 Д12 Д13 Д21 Д22 Д23 Д31 Д32 Д33

А1 Ц11 Ц12 Ц13 Null Null Null Null Null Null
А2 Null Null Null Ц21 Ц22 Ц23 Null Null Null
А3 Null Null Null Null Null Null Ц31 Ц32 Ц33

Если кто может посоветовать как добиться таблицы предпоследнего вида - пожалуйста подскажите.

P.S. О более подходящем разделе для вопросов этого типа понял. При следующем вопросе - сменю рубрику.
...
Рейтинг: 0 / 0
21.01.2005, 16:41:59
    #32877785
Bagin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
gluckeХочется сделать запрос показывающий следующее:
Акция Д1 Д2 Д3

А1 Ц11 Ц12 Ц13
А2 Ц21 Ц22 Ц23
А3 Ц31 Ц32 Ц33ИМНО, не есть правильно, т.к. Д1, Д2, Д3 у разных акций разные, т.е. нужно примерно так:
Код: plaintext
1.
2.
A1     Д11 Ц11     Д12 Ц12      Д13 Ц13
A1     Д11 Ц11     Д12 Ц12      Д13 Ц13
A1     Д11 Ц11     Д12 Ц12      Д13 Ц13
...
Рейтинг: 0 / 0
23.01.2005, 23:35:33
    #32879056
glucke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
Безусловно можно и так. Наверное для внешнего пользователя последний вариант будет лучше. Но вопрос как сделать хотябы один из двух вариантов.
...
Рейтинг: 0 / 0
24.01.2005, 15:17:26
    #32880319
glucke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с построением сложного запроса.
Ура, я сделал это!
Он стал показывать все, в форме рекомендованной by Bagin (Через 3 запроса реализовал это, правда чуть подтормаживает но это уже детали).
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с построением сложного запроса. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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