powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание таблицы с периодом действия цен (Price list)
5 сообщений из 5, страница 1 из 1
Создание таблицы с периодом действия цен (Price list)
    #40075923
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Столкнулся со следующей проблемой. Есть таблица (пример таблицы на рис. Таблица 1), где на каждый день указны цены товаров в магазине (кол-во строк за один день порядка 500 000). Нужно создать таблицу в которой будут указаны периоды действия цен (Таблица 2)
тоесть нужно создать таблицу.
Магазин - Товар - ДатаДействияС - ДатаДействияПо - Цена

Есть у кого-нибудь идея, как это оптимальней сделать?
...
Рейтинг: 0 / 0
Создание таблицы с периодом действия цен (Price list)
    #40075926
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msleg,

поиск по "инвариант" на форуме
суть будет такая
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with cte as (
select
    ...
    ,row_number()over(partition by Магазин, Товар order by Дата) 
        - row_number()over(partition by Магазин, Товар, Цена order by Дата) as inv
from ..
)
select 
    Магазин, Товар, Цена, min(Дата), max(Дата)
from cte
group by 
    Магазин, Товар, Цена, inv
...
Рейтинг: 0 / 0
Создание таблицы с периодом действия цен (Price list)
    #40075937
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
msleg,

поиск по "инвариант" на форуме
суть будет такая
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with cte as (
select
    ...
    ,row_number()over(partition by Магазин, Товар order by Дата) 
        - row_number()over(partition by Магазин, Товар, Цена order by Дата) as inv
from ..
)
select 
    Магазин, Товар, Цена, min(Дата), max(Дата)
from cte
group by 
    Магазин, Товар, Цена, inv


Это ж позор и профнепригодность.

LEAD/LAG спасет отца русской демократиии.
...
Рейтинг: 0 / 0
Создание таблицы с периодом действия цен (Price list)
    #40075940
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msleg Есть у кого-нибудь идея, как это оптимальней сделать? Критерий оптимальности в студию
С двумя датами проще искать, но возможны как накладки (две цены на дату) так и разрывы
С одной датой это исключено, но запрос будет позаковыристее
...
Рейтинг: 0 / 0
Создание таблицы с периодом действия цен (Price list)
    #40075976
msleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,

Спасибо. Вроде все работает как надо

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
WITH CTE as
(
	SELECT 
		[IDShop]
		,[IDSku]
		,[Date]
		,[Price]
		,row_number() over (partition by [IDShop], [IDSku] order by [Date])
		- row_number() over (partition by [IDShop], [IDSku], [Price] order by [Date]) as inv
	FROM [dbo].[testPrice] (nolock)
)

SELECT 
	[IDShop]
	,[IDSku]
	,[Price]
	,min(Date) as DateStart
	,max(date) as DateEnd
FROM CTE
GROUP BY 
	[IDShop]
	,[IDSku]
	,[Price]
	,inv
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание таблицы с периодом действия цен (Price list)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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