Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Прошу помочь с запросами  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 5121
Имел дело с MS SQL довольно давно. А тут подкинули задачу и не знаю с какой стороны за неё браться.

Есть таблица заказов. В ней заказчики и даты оформления.
Надо посчитать интервалы между заказами для каждого заказчика (в днях, если кому интересно).
И всё это на запросах. (Если возможно)

Просто не знаю с чего начинать.


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
28 мар 19, 14:24    [21846119]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
Joss,

Начните с того, что для каждого заказа определенного заказчика найдите предыдущий заказ.
28 мар 19, 14:41    [21846145]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 5121
Это-то понятно, но КАК???

Делаю SELECT с сортировкой по коду заказчика и дате заказа. Глазами вижу, а как это прописать - не знаю.

Надо из даты следующего заказа вычесть предыдущий для каждого конкретного заказчика.

Вообще дикие мысли в голову лезут.

Взять два моих запроса и объединить их по коду заказчика. и добавить расчётное поле - разность дат из первого и второго запроса.

Потом сделать выборку из полученного "шедевра". Там где разность 0 -основная запись., к ней добавить запись с минимальным положительным значением разности дат.

Такая идея сработает?
28 мар 19, 15:14    [21846196]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
court
Member

Откуда:
Сообщений: 2015
Joss,

какая версия сервера ?
28 мар 19, 15:18    [21846212]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 5121
MS SQL Server 2005

Но знаете, хотя моя идея и выглядит по идиотски, но результаты для дальнейшего анализа она дала.

Получилось три поля: код заказчика, дата заказа, число дней до следующего заказа.

Ну должен же быть какой-то нормальный метод расчёта?
28 мар 19, 15:31    [21846231]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
Joss,

Если понятно, но КАК не знаешь, то пора взяться за учебники.

Привели бы ваши запросы, что не получается? А то сразу версию сервера спрашивают!
28 мар 19, 15:33    [21846234]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
Wlr-l
Member

Откуда:
Сообщений: 522
Joss
MS SQL Server 2005

Но знаете, хотя моя идея и выглядит по идиотски, но результаты для дальнейшего анализа она дала.

Получилось три поля: код заказчика, дата заказа, число дней до следующего заказа.

Ну должен же быть какой-то нормальный метод расчёта?


Пока идеи у вас нет.

Сначала получите код заказчика, дата заказа, дата предыдущего заказа.

Если это сделать не сможете, то дальше идти смысла нет.
28 мар 19, 15:37    [21846239]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
982183
Member

Откуда: VL
Сообщений: 3352
А prev_value разве не поможет?
28 мар 19, 15:38    [21846242]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помочь с запросами  [new]
court
Member

Откуда:
Сообщений: 2015
Joss
MS SQL Server 2005


плохо, конечно, но не смертельно :)

Joss
Есть таблица заказов. В ней заказчики и даты оформления.

select
  a.заказчик
  ,a.[дата оформления]
  ,c.[дата оформления] as [дата пред заказа]
  ,datediff(day, c.[дата оформления], a.[дата оформления]) as [интервалы между заказами для каждого заказчика (в днях, если кому интересно)]
from [Есть таблица заказов] a
outer apply (select top 1 b.[дата оформления] from [Есть таблица заказов] b 
             where a.заказчик=b.заказчик and a.[дата оформления]>b.[дата оформления] order by b.[дата оформления] desc) c
28 мар 19, 15:54    [21846265]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить