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

Откуда:
Сообщений: 4
Помогите пожалуйста с запросом.

Select
"StockDate" = CONVERT(nvarchar,STOCK.OperationDate,104) ,
STOCK.Customer,
STOCK.Cod_Product,
STOCK.PRD_qty,
STOCK.Stock_Qty,
"VISIT-1" = CONVERT(nvarchar,ORD.OperationDate,104),
ORD.QtyOrdered,
ORD.QtyDelivered
FROM
(Select distinct
OperationDate,
Customer,
Cod_Product,
"PRD_qty" = count(Cod_Product),
"Stock_Qty" = sum(Stock_Qty)
from Stock_Order_Delivery
Where Customer = '0850058905'
Group by
OperationDate,
Customer,
Cod_Product
)
AS STOCK

INNER JOIN 
(Select distinct
OperationDate,
Customer,
Cod_Product,
"PRD_qty" = count(Cod_Product),
"QtyOrdered" = sum(QtyOrdered),
"QtyDelivered" = sum(QtyDelivered)
from Stock_Order_Delivery
Where Customer = '0850058905'
Group by
OperationDate,
Customer,
Cod_Product
)
AS ORD
ON (STOCK.Customer = ORD.Customer
   and 
   STOCK.Cod_Product = ORD.Cod_Product
   and 
   CONVERT(nvarchar,ORD.OperationDate,104)< CONVERT(nvarchar,STOCK.OperationDate,104))
GROUP BY
STOCK.OperationDate ,
STOCK.Customer,
STOCK.Cod_Product,
STOCK.PRD_qty,
STOCK.Stock_Qty,
ORD.QtyOrdered,
ORD.QtyDelivered,
ORD.OperationDate
Order by
STOCK.OperationDate ,
STOCK.Customer,
STOCK.Cod_Product

Как к этому запросу добавить функцию , которая выбирала бы к каждой "STOCK.OperationDate"
максимальную предыдущую дату "ORD.OperationDate"?
----------------------------------------------------------------------------------------------------
Логика вопроса такова:
есть клиент(клиенты) , который посещался к примеру 29.09, 01.10, 06.10, 08.10
дата визита
29.09.2010 01.10.2010 06.10.2010 08.10.2010

сток = 2 сток = 1 сток = 2 сток = 1
заказ = 1(на 01.10) заказ =3 (на 06.10) заказ = 2(на 08.10)

в итоге необходимо получить в одной строке сток одной даты (например 08.10) и заказ предыдущего визита(т.е максимальной предыдущей даты) в этом случае он должен получится заказ от 06.10
дата стока сток дата предыдущего визита заказ
08.10.2010 1 06.10.2010 2


Целый день бьюсь , я тупой наверно!?

Сообщение было отредактировано: 15 окт 09, 18:20
15 окт 09, 18:09    [7793283]     Ответить | Цитировать Сообщить модератору
 Re: Поиск максимальной предыдущей даты( даты предыдущего визита)  [new]
aleks2
Guest
select S.OperationDate, O.OperationDate
FROM 
STOCK S
INNER JOIN
ORD O
ON 
S.OperationDate>O.OperationDate
AND 
S.Customer = O.Customer
and 
S.Cod_Product = O.Cod_Product
LEFT OUTER JOIN
ORD O1
ON 
S.OperationDate>O1.OperationDate AND O1.OperationDate<O.OperationDate
AND 
S.Customer = O1.Customer
and 
S.Cod_Product = O1.Cod_Product
WHERE 
O1.OperationDate is null
15 окт 09, 18:18    [7793326]     Ответить | Цитировать Сообщить модератору
 Re: Поиск максимальной предыдущей даты( даты предыдущего визита)  [new]
iljy
Member

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

а что мешает решить влоб - сделать кореллированный подзапрос в списке SELECT?
15 окт 09, 18:21    [7793346]     Ответить | Цитировать Сообщить модератору
 Re: Поиск максимальной предыдущей даты( даты предыдущего визита)  [new]
AlexanderMur
Member

Откуда:
Сообщений: 4
aleks2,
к сожалению не получилось
ко всем датам стока(S) выбирается только одна дата 29.09
а надо что бы ко всем датам снятия стока выбиралась толкько предыдущая дата визита
но всё равно огромное спасибо , попытаюсь использовать вашу логику
15 окт 09, 21:33    [7793866]     Ответить | Цитировать Сообщить модератору
 Re: Поиск максимальной предыдущей даты( даты предыдущего визита)  [new]
aleks2
Guest
AlexanderMur
aleks2,
к сожалению не получилось
ко всем датам стока(S) выбирается только одна дата 29.09
а надо что бы ко всем датам снятия стока выбиралась толкько предыдущая дата визита
но всё равно огромное спасибо , попытаюсь использовать вашу логику


1. Данные и таблицы приведи скриптом, мне набивать лень.
2. Не исключено, что я перепутал местами STOCK и ORD.
16 окт 09, 06:43    [7794536]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить