尝试找到适用于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)));
答案 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
的来源,所以我只是在查询中将其设为固定值。