近期价格处于降价趋势(至少调了3次)的所有商品

-- 近期价格处于降价趋势(至少调了3次)的所有商品
if   object_id ( ' [tb] ' ) is   not   null   drop   table   [ tb ]
go  
create   table   [ tb ] ( [ 日期 ]   datetime , [ 商品编码 ]   varchar ( 6 ), [ 价格 ] numeric( 3 , 1 ))
insert   [ tb ]
select   ' 20091101 ' , ' 033001 ' , 11.9   union   all
select   ' 20091101 ' , ' 033002 ' , 30.5   union   all
select   ' 20091101 ' , ' 033003 ' , 2   union   all

select   ' 20091102 ' , ' 033001 ' , 11.9   union   all
select   ' 20091102 ' , ' 033002 ' , 30     union   all
select   ' 20091102 ' , ' 033003 ' , 2       union   all

select   ' 20091103 ' , ' 033001 ' , 11.5   union   all
select   ' 20091103 ' , ' 033002 ' , 30.5   union   all
select   ' 20091103 ' , ' 033003 ' , 2.5     union   all

select   ' 20091104 ' , ' 033001 ' , 11.5   union   all
select   ' 20091104 ' , ' 033002 ' , 30.5   union   all
select   ' 20091104 ' , ' 033003 ' , 2.5     union   all

select   ' 20091105 ' , ' 033001 ' , 11.5   union   all
select   ' 20091105 ' , ' 033002 ' , 30.5   union   all
select   ' 20091105 ' , ' 033003 ' , 2.8     union   all

select   ' 20091106 ' , ' 033001 ' , 11.5   union   all
select   ' 20091106 ' , ' 033002 ' , 30     union   all
select   ' 20091106 ' , ' 033003 ' , 2.9     union   all

select   ' 20091107 ' , ' 033001 ' , 11     union   all
select   ' 20091107 ' , ' 033002 ' , 30     union   all
select   ' 20091107 ' , ' 033003 ' , 2.9     union   all

select   ' 20091108 ' , ' 033001 ' , 10.8   union   all
select   ' 20091108 ' , ' 033002 ' , 30     union   all
select   ' 20091108 ' , ' 033003 ' , 2.9  
   
-- ------------开始查询--------------------------
with cte2 as  
(
select row_number() over (partition by 商品编码 order   by 价格 desc ) as denserank, *   from tb)
select   *   from cte2 
where 商品编码 in ( select 商品编码 from cte2 where 日期 = ' 20091108 '   and denserank >= 3
order   by   商品编码,日期

/*
denserank 日期    商品编码  价格
----------------------------------
  1      2009-11-01     033001    11.9
  2      2009-11-02     033001    11.9
  3      2009-11-03     033001    11.5
  4      2009-11-04     033001    11.5
  5      2009-11-05     033001    11.5
  6      2009-11-06     033001    11.5
  7      2009-11-07     033001    11.0
  8      2009-11-08     033001    10.8
  4      2009-11-01     033002    30.5
  5      2009-11-02     033002    30.0
  3      2009-11-03     033002    30.5
  2      2009-11-04     033002    30.5
  1      2009-11-05     033002    30.5
  6      2009-11-06     033002    30.0
  8      2009-11-07     033002    30.0
  7      009-11-08     033002    30.0
*/




你可能感兴趣的:(近期价格处于降价趋势(至少调了3次)的所有商品)