我有两张table需要合并。我有:
LEFT JOIN AutoBAF on (GETDATE() BETWEEN AutoBAF.FromDate and AutoBAF.ToDate)
我得到了预期的结果。现在,如果在两个日期(autobaf.fromdate和autobaf.todate)之间找不到匹配的记录,我想加入最新的匹配记录。
谁能给我指出正确的方向吗。
我使用的是托管在azure中的mssql数据库。
小例子:
我正在努力实现的一个小例子:
餐桌产品:
Product | Description
A | Product A
表中价格
Product | FromDate | ToDate | Price
A | 01-01-20 | 31-01-20 | 100
A | 01-02-20 | 28-02-20 | 110
我需要一个根据getdate()返回的日期返回价格的查询。
如果我运行查询15-01-20,我应该得到:
Product | Description | Price
A | Product A | 100
如果我运行查询15-02-20,我应该得到:
Product | Description | Price
A | Product A | 110
最后,如果我运行查询15-03-20,我将在价格表中没有价格。我不想返回空值,而是“退回”到最近的已知价格,在这个例子中是110
3条答案
按热度按时间qeeaahzv1#
pnwntuvh2#
这不是最快的查询,因为它将产品与所有具有未来日期的记录连接在一起。但是如果你的table很小,那就行了。
nmpmafwu3#
这看起来像sql server代码,它支持通过
apply
关键字。假设您只需要一个匹配项:请注意,这与
product
,这不是你问题的一部分。如果不需要,则可以使用:
如果你知道过去有一些记录,那么你可以使用
cross join
而不是left join
并免除on
条款。