ms访问日期查找价格

时间:2014-08-11 23:00:39

标签: sql ms-access

尝试找到适用于MSAccess SQL的解决方案(这有点古怪)

我有一个源表SalesPrices,其中包含以下格式的数据:

Product | Price | Time Effective
25      |  3.49 | 25/01/2013
25      |  3.65 | 02/02/2014

现在,我想要做的是针对给定的日期范围,生成产品价格表和开始日期:

WC         | Product   | Price
13/01/2014 | 25        | 3.49
20/01/2014 | 25        | 3.49
27/01/2014 | 25        | 3.65
03/02/2014 | 25        | 3.65

所以,为此,我创建了一个日期表,其中包含我想要的日期范围

ID  | WC   
1   | 13/01/2014
2   | 20/01/2014
3   | 27/01/2014
4   | 3/02/2014
5   | 10/02/2014

我不完全确定如何编写查询,它需要为tableofdates中的每个产品和每个日期生成一行,价格在适当的时间更改

像表的交叉连接之类的东西,但我不能完全得到语法

编辑到目前为止包含我的查询

SELECT [SalesPrices].[Product], [SalesPrices].[time eff], TableOfDates.WC, [SalesPrices].[Price]
FROM [SalesPrices], TableOfDates
WHERE ((([SalesPrices].[Product])=25) AND (([SalesPrices].[time eff]) 
Between [tableofdates].[wc] And ([tableofdates].[wc]+7)));

1 个答案:

答案 0 :(得分:2)

您可以使用子查询执行此操作:

select tod.wc, 25 as product,
       (select top 1 price
        from SalesPrices as sp
        where sp.TimeEffective <= tod.wc and product = 25
        order by TimeEffective desc, id
       ) as price
from TableOfDates as tod
where . . . <-- date conditions go here;

我不确定25的来源,所以我只是在查询中将其设为固定值。