У меня есть таблица, содержащая данные о цене продукта, как это:Рассчитать скидка между неделями
ProductId RecordDate Price
46 2015-01-17 14:35:05.533 112.00
47 2015-01-17 14:35:05.533 88.00
45 2015-01-17 14:35:05.533 134.00
Я был в состоянии группировать данные по неделям и продуктом, с этим запросом:
SET DATEFIRST 1;
SELECT DATEADD(WEEK, DATEDIFF(WEEK, 0, [RecordDate]), 0) AS [Week], ProductId, MIN([Price]) AS [MinimumPrice]
FROM [dbo].[ProductPriceHistory]
GROUP BY DATEADD(WEEK, DATEDIFF(WEEK, 0, [RecordDate]), 0), ProductId
ORDER BY ProductId, [Week]
получения этот результат:
Week Product Price
2015-01-12 00:00:00.000 1 99.00
2015-01-19 00:00:00.000 1 98.00
2015-01-26 00:00:00.000 1 95.00
2015-02-02 00:00:00.000 1 95.00
2015-02-09 00:00:00.000 1 95.00
2015-02-16 00:00:00.000 1 95.00
2015-02-23 00:00:00.000 1 80.00
2015-03-02 00:00:00.000 1 97.00
2015-03-09 00:00:00.000 1 85.00
2015-01-12 00:00:00.000 2 232.00
2015-01-19 00:00:00.000 2 233.00
2015-01-26 00:00:00.000 2 194.00
2015-02-02 00:00:00.000 2 194.00
2015-02-09 00:00:00.000 2 199.00
2015-02-16 00:00:00.000 2 199.00
2015-02-23 00:00:00.000 2 199.00
2015-03-02 00:00:00.000 2 214.00
Теперь для каждого продукта я хотел бы получить разницу между значениями за две недели, поэтому что я могу рассчитать скидку. Я не знаю, как написать это как SQL-запрос!
EDIT: Ожидаемый результат будет что-то вроде этого:
Product Price
1 -12.00
2 15.00
Спасибо!
Вы можете добавить ожидаемый результат –
Какие dbms? (Дата/время является одной из областей, где многие продукты dbms делают что-то по-своему ...) – jarlh
Вы оба правы, я редактировал мой вопрос! СУБД - Sql Server 2014. Спасибо! – Alessandro