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

Откуда:
Сообщений: 1081
вот такой код. Что мечтается - имеем прайслист, где указаны цены на товары (SKU) по датам.
необходимо исключить все последовательно (по датам) одинаковые по ценам позиции
Это работает. Но нужно без row_number() решить, ибо 1С
Возможно ли?
+

;with cte (sku,[date],price) as (
select 1,'20180101',2
union all
select 1,'20180102',2
union all 
select 1,'20180103',2
union all 
select 1,'20180104',3
union all
select 1,'20180105',3
union all
select 1,'20180106',2
union all
---
select 2,'20180101',2
union all
select 2,'20180102',2
union all 
select 2,'20180103',2
union all 
select 2,'20180104',3
union all
select 2,'20180105',3
union all
select 2,'20180106',2
union all
select 2,'20170104',2 -- especial

)
, tot (rn,date,price,sku) as
(select ROW_NUMBER() over(order by sku,date) rn -- root of evil :)
		,date
		,price
		,sku
from cte)
select t1.sku
		,t1.date	
		,t1.price
		
from tot t1 
left join tot t2 
on t2.rn=t1.rn-1 
	and t1.price=t2.price 
	and t1.sku=t2.sku
where t2.rn is null

16 мар 18, 16:37    [21262075]     Ответить | Цитировать Сообщить модератору
 Re: row_number() недоступен. Возможно ли заменить?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
FAQ форума
16 мар 18, 16:42    [21262084]     Ответить | Цитировать Сообщить модератору
 Re: row_number() недоступен. Возможно ли заменить?  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1081
Maxx,
возможно, неверно объяснил (или не понял, в где годный FAQ по этому вопросу)
вот такой результат дает скрипт. но с row_number()
sku date price
1 20180101 2
1 20180104 3
1 20180106 2
2 20170104 2
2 20180104 3
2 20180106 2

а мечтается без
16 мар 18, 16:49    [21262108]     Ответить | Цитировать Сообщить модератору
 Re: row_number() недоступен. Возможно ли заменить?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
https://www.sql.ru/faq/faq_topic.aspx?fid=126
16 мар 18, 16:53    [21262118]     Ответить | Цитировать Сообщить модератору
 Re: row_number() недоступен. Возможно ли заменить?  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
waszkiewicz,

Для того чтобы определить предыдущее значение прайс-листа и сравнить его с текущим не обязательно нумеровать строки. Можно и вложенным запросом.

select t1.*
from cte t1 
where isnull((Select top 1 t2.price From cte t2 WHere t1.sku = t2.sku and t1.date>t2.date Order by t2.date desc),-1) <> t1.price
19 мар 18, 04:17    [21266436]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить