求SQL查询语句,在线等......
单价表
货品编号 单价开始日期 批量 单价
-------------------------------------------------
A 2007-02-01 1 203.50
A 2007-02-01 50 203.00
A 2007-02-01 200 202.00
A 2007-03-01 1 198.30
A 2007-03-01 50 197.00
A 2007-03-01 200 196.50
B 2007-02-15 1 36.30
B 2007-02-15 1000 35.00
B 2007-03-01 1 38.00
B 2007-03-01 1000 36.90
如何求以下订单表中的订货单价,该单价是根据订单日期
和订货数量在单价表中所处的区间求出。
订单表
货品编号 订单日期 订货数量 订货单价
-----------------------------------------------
A 2007-02-20 30 203.50
A 2007-02-22 430 202.00
A 2007-03-09 150 197.00
B 2007-02-18 3000 35.00
B 2007-03-07 900 38.00
[解决办法]
没看明白,帮顶~
[解决办法]
-- Try like this!
select *,
(select top 1 单价 from [单价表]
where 货品编号=a.货品编号
and a.订单日期> =单价开始日期
and a.订货数量> =批量
order by 单价开始日期 desc,批量 desc) as 定货价格
from [订单表] a
[解决办法]
你是要通过 货品编号 订单日期 订货数量 这三个参数来查单价?
比如要查 货品A 在2007-02-20 订30个的单价
select 单价 from 单价表
where 货品编号= 'A ' and 单价开始日期 <= '2007-2-20 ' and 批量 <= '30 '
[解决办法]
create table 单价表(货品编号 varchar(10), 单价开始日期 datetime, 批量 int, 单价 decimal(10,2))
insert 单价表 select 'A ', '2007-02-01 ', 1, 203.50
union all select 'A ', '2007-02-01 ', 50, 203.00
union all select 'A ', '2007-02-01 ', 200, 202.00
union all select 'A ', '2007-03-01 ', 1, 198.30
union all select 'A ', '2007-03-01 ', 50, 197.00
union all select 'A ', '2007-03-01 ', 200, 196.50
union all select 'B ', '2007-02-15 ', 1, 36.30
union all select 'B ', '2007-02-15 ', 1000, 35.00
union all select 'B ', '2007-03-01 ', 1, 38.00
union all select 'B ', '2007-03-01 ', 1000, 36.90
create table 订单表(货品编号 varchar(10), 订单日期 datetime, 订货数量 int)
insert 订单表 select 'A ', '2007-02-20 ', 30
union all select 'A ', '2007-02-22 ', 430
union all select 'A ', '2007-03-09 ', 150
union all select 'B ', '2007-02-18 ', 3000
union all select 'B ', '2007-03-07 ', 900
select *,
订货单价=(select top 1 单价 from 单价表 as B
where B.货品编号=A.货品编号 and A.订单日期> =B.单价开始日期 and A.订货数量> =B.批量
order by B.单价开始日期 desc, B.批量 desc)
from 订单表 as A
--result
货品编号 订单日期 订货数量 订货单价
---------- ------------------------------------------------------ ----------- ------------
A 2007-02-20 00:00:00.000 30 203.50
A 2007-02-22 00:00:00.000 430 202.00
A 2007-03-09 00:00:00.000 150 197.00
B 2007-02-18 00:00:00.000 3000 35.00
B 2007-03-07 00:00:00.000 900 38.00
(5 row(s) affected)
[解决办法]
select * from 单价表 where 订单日期 > @begin and 订单日期 < @end and 订货数量> @one and 订货数量 <@two