powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sql запрос поиск ближайшего значения
5 сообщений из 5, страница 1 из 1
sql запрос поиск ближайшего значения
    #39809498
Baters
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

В sql я не очень силен (в основном делаю только линейные выборки, сортировки, группировки), окажите содействие в решении следующей задачи.
Есть вьюшка результатом которой мы получаем- дата(формат 20190101 -число), номенклатура (формат число), количество (число), сумма оборот (число) получаем порядка 3 млн строк.
Есть другая вьюшка, результат которой- дата (число 20190101), номенклатура (число), себестоимость за единицу (число), порядка 300 тыс строк.

Необходимо к первой вьюшке прикрутить себестоимость из 2, по следующему условию - Вьюшка1.Номенклатура = Вьюшка2.Номенклатура И Вьюшка2.Дата<=Вьюшка1.Дата (ищем ближайшее значение себестоимости по номенклатуре и периоду).

Пробовал к первой вьюшке делать подзапрос (Select top 1 себестоимость From вьюшка2 where Вьюшка1.Номенклатура = Вьюшка2.Номенклатура И Вьюшка2.Дата<=Вьюшка1.Дата Order by Дата), но это висит просто неимоверно долго.
...
Рейтинг: 0 / 0
sql запрос поиск ближайшего значения
    #39809518
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кнопка "Сделать фсе быстро и правильно" никак не выйдет из стадии бета-тестирования.

Вариантов у тя два
1. Быстрый и неправильный - материализовать View: select * into #t from View/
2. Небыстрый и правильный - таки выкинуть из вьюшек лишнее и написать их правильно.
...
Рейтинг: 0 / 0
sql запрос поиск ближайшего значения
    #39809520
TheRookie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BatersНеобходимо к первой вьюшке прикрутить себестоимость из 2, по следующему условию - Вьюшка1.Номенклатура = Вьюшка2.Номенклатура И Вьюшка2.Дата<=Вьюшка1.Дата (ищем ближайшее значение себестоимости по номенклатуре и периоду).

Пробовал к первой вьюшке делать подзапрос (Select top 1 себестоимость From вьюшка2 where Вьюшка1.Номенклатура = Вьюшка2.Номенклатура И Вьюшка2.Дата<=Вьюшка1.Дата Order by Дата), но это висит просто неимоверно долго.

3. Попробуй через CROSS APPLY - вдруг повезёт.
4. Попробуй переписать запрос - вместо названий вьюшек подставить их определение - иногда это помогает.
...
Рейтинг: 0 / 0
sql запрос поиск ближайшего значения
    #39809523
Baters
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а функция last_Value (MS 2012) может ине подсобить (гуглю, все похожее)?
...
Рейтинг: 0 / 0
sql запрос поиск ближайшего значения
    #39809541
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может помочь lead/lag:
Код: sql
1.
2.
3.
4.
5.
With [периоды себестоимости] as 
(Select *,lead([Дата],1,@MaxDate) Over(Partiotion by [номеклатура] Order by [Дата]) as [ДатаОкончания] From [Себестоимость])
Select a.*, b.[Себестоимость]
From [Обороты] a
join [периоды себестоимости]  b on a.[номеклатура] = b.[номеклатура] and a.[Дата] >= b.[Дата] and a.[Дата] < b.[ДатаОкончания]
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sql запрос поиск ближайшего значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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