向大家请教,查询合适时间段中前两条数据
举例来说明吧:
表A
门店编号 供应商 价格 有效时间起 有效时间止
1001 海鲜供应商 23 2012-09-01 2012-09-30
1001 海鲜供应商 24.5 2012-10-01 2012-10-31
1001 海鲜供应商 25.5 2012-10-05 2012-10-31
1001 海鲜供应商 27 2012-10-15 2012-10-31
1001 海鲜供应商 29.5 2012-11-01 2012-11-30
1002 蔬菜供应商 4 2012-10-01 2012-10-30
1002 蔬菜供应商 5.5 2012-10-05 2012-10-31
1002 蔬菜供应商 6.5 2012-10-10 2012-10-31
1002 蔬菜供应商 8 2012-10-15 2012-10-31
1002 蔬菜供应商 9.5 2012-11-01 2012-11-30
这是一个调价表
以今天18号为例,查询2012-10-18各门店的供应商供货价格,下面能进入有效价格的数据
门店编号 供应商 价格 有效时间起 有效时间止
1001 海鲜供应商 24.5 2012-10-01 2012-10-31
1001 海鲜供应商 25.5 2012-10-05 2012-10-31
1001 海鲜供应商 27 2012-10-15 2012-10-31
1002 蔬菜供应商 4 2012-10-01 2012-10-30
1002 蔬菜供应商 5.5 2012-10-05 2012-10-31
1002 蔬菜供应商 6.5 2012-10-10 2012-10-31
1002 蔬菜供应商 8 2012-10-15 2012-10-31
但我想查询出最近两次调价的数据,达到如下效果
门店编号 供应商 价格 有效时间起 有效时间止
1001 海鲜供应商 27 2012-10-15 2012-10-31
1001 海鲜供应商 25.5 2012-10-05 2012-10-31
1002 蔬菜供应商 8 2012-10-15 2012-10-31
1002 蔬菜供应商 6.5 2012-10-10 2012-10-31
[解决办法]
select b.* from 表A a
cross apply(select top 2 * from 表A
where 门店编号=a.门店编号 and 供应商=a.供应商
and getdate() between 有效时间起 and 有效时间止 order by 有效时间起 desc) b
[解决办法]
if object_id('[A]') is not null drop table [A]
go
create table [A]([门店编号] int,[供应商] varchar(10),[价格] numeric(3,1),[有效时间起] datetime,[有效时间止] datetime)
insert [A]
select 1001,'海鲜供应商',23,'2012-09-01','2012-09-30' union all
select 1001,'海鲜供应商',24.5,'2012-10-01','2012-10-31' union all
select 1001,'海鲜供应商',25.5,'2012-10-05','2012-10-31' union all
select 1001,'海鲜供应商',27,'2012-10-15','2012-10-31' union all
select 1001,'海鲜供应商',29.5,'2012-11-01','2012-11-30' union all
select 1002,'蔬菜供应商',4,'2012-10-01','2012-10-30' union all
select 1002,'蔬菜供应商',5.5,'2012-10-05','2012-10-31' union all
select 1002,'蔬菜供应商',6.5,'2012-10-10','2012-10-31' union all
select 1002,'蔬菜供应商',8,'2012-10-15','2012-10-31' union all
select 1002,'蔬菜供应商',9.5,'2012-11-01','2012-11-30'
go
select *
from A t
where 有效时间起 in(
select top 2 有效时间起
from a
where 门店编号=t.门店编号 and 供应商=t.供应商 and 有效时间起<='2012-10-18'
order by 有效时间起 desc
)
order by 门店编号,供应商,有效时间起 desc
/**
门店编号 供应商 价格 有效时间起 有效时间止
----------- ---------- --------------------------------------- ----------------------- -----------------------
1001 海鲜供应商 27.0 2012-10-15 00:00:00.000 2012-10-31 00:00:00.000
1001 海鲜供应商 25.5 2012-10-05 00:00:00.000 2012-10-31 00:00:00.000
1002 蔬菜供应商 8.0 2012-10-15 00:00:00.000 2012-10-31 00:00:00.000
1002 蔬菜供应商 6.5 2012-10-10 00:00:00.000 2012-10-31 00:00:00.000
(4 行受影响)
**/
ENDTIME
FROM JG_TBL
WHERE '2012-10-18' BETWEEN STARTTIME AND ENDTIME)
WHERE ROWNO < 3