首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求SQL查询语句,

2012-01-18 
求SQL查询语句,在线等......单价表货品编号单价开始日期批量单价---------------------------------------

求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

热点排行