34,590
社区成员
发帖
与我相关
我的任务
分享
create PROCEDURE [dbo].[Test]
as
begin
SELECT 入库日期,产品型号,入库数量,
(
SELECT 价格
from B
WHERE 价格执行日期=
(
SELECT distinct MAX(价格执行日期)
FROM B
where 价格执行日期<=入库日期 and A.产品型号=B.产品型号)
and A.产品型号=B.产品型号
)
FROM A
end
create table a(入库日期 datetime,产品型号 varchar(10),入库数量 int)
insert into a values('2011-09-01', 'AT001', 2)
insert into a values('2011-09-05', 'AT001', 5)
insert into a values('2011-09-08', 'AT001', 3)
insert into a values('2011-09-06', 'AT002', 3)
create table B(价格执行日期 datetime,产品型号 varchar(10),价格 int)
insert into b values('2011-08-31', 'AT001', 1)
insert into b values('2011-09-02', 'AT001', 2)
insert into b values('2011-08-31', 'AT002', 3)
insert into b values('2011-09-05', 'AT002', 4)
go
select a.* , 价格 = (select top 1 价格 from b where b.产品型号 = a.产品型号 and b.价格执行日期 < a.入库日期 order by b.价格执行日期 desc) from a
drop table a , b
/*
入库日期 产品型号 入库数量 价格
------------------------------------------------------ ---------- ----------- -----------
2011-09-01 00:00:00.000 AT001 2 1
2011-09-05 00:00:00.000 AT001 5 2
2011-09-08 00:00:00.000 AT001 3 2
2011-09-06 00:00:00.000 AT002 3 4
(所影响的行数为 4 行)
*/
create table a(入库日期 datetime,产品型号 varchar(10),入库数量 int)
insert into a values('2011-09-01', 'AT001', 2)
insert into a values('2011-09-05', 'AT001', 5)
insert into a values('2011-09-08', 'AT001', 3)
insert into a values('2011-09-06', 'AT002', 3)
create table B(价格执行日期 datetime,产品型号 varchar(10),价格 int)
insert into b values('2011-08-31', 'AT001', 1)
insert into b values('2011-09-02', 'AT001', 2)
insert into b values('2011-08-31', 'AT002', 3)
insert into b values('2011-09-05', 'AT002', 4)
go
select a.* , 价格 = (select top 1 价格 from b where b.产品型号 = a.产品型号 and b.价格执行日期 < a.入库日期 order by b.价格执行日期 desc) from a
drop table a , b
/*
入库日期 产品型号 入库数量 价格
------------------------------------------------------ ---------- ----------- -----------
2011-09-01 00:00:00.000 AT001 2 1
2011-09-05 00:00:00.000 AT001 5 2
2011-09-08 00:00:00.000 AT001 3 2
2011-09-06 00:00:00.000 AT002 3 4
(所影响的行数为 4 行)
*/