Sql根据日期从多个表中获取最小值
例如:Sql根据日期从多个表中获取最小值,sql,sql-server,Sql,Sql Server,例如: Table B Table A ID Item Record ID Date 1 pen 10 1 1/1/2015 1 CD 40 2 7/3/2015 2 pen 20 3 5/8/2016 2 CD 50
Table B Table A
ID Item Record ID Date
1 pen 10 1 1/1/2015
1 CD 40 2 7/3/2015
2 pen 20 3 5/8/2016
2 CD 50 4 10/12/2016
3 pen 8
3 CD 30
3 pen 5
4 pen 10
4 CD 35
结果是:
ID Item Record LowestRecord Date
1 pen 10 10 1/1/2015
1 CD 40 40 1/1/2015
2 pen 20 10 7/3/2015
2 CD 50 40 7/3/2015
3 pen 8 5 5/8/2016
3 CD 30 30 5/8/2016
3 pen 5 5 5/8/2016
4 pen 10 5 10/12/2016
4 CD 35 30 10/12/2016
所以它选择最小值直到当前日期记录。
提前谢谢 假设date列为date类型,您可以按如下方式连接行表:
select
a.*,
min(a.record) over (partition by item order by b.date, b.id) minrecord,
b.date
from tableA a
inner join tableB b
on a.id = b.id;
您可以使用窗口功能,按项目对记录进行分组,并将框架限制为仅适用于日期小于等于当前记录日期的记录,然后取最小值
SELECT a.*
, min(a.record)
OVER (PARTITION BY Item ORDER BY b.[Date] DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS LowestRecord
, b.[DATE]
FROM
a JOIN b ON a.id = b.id
它是基于标题表中的日期选择的,其中的日期为什么这不只是id上的表之间的连接?我可以请求您在您的答案周围添加一些上下文吗。只有代码的答案很难理解。如果你能在文章中添加更多信息,这将有助于询问者和未来的读者。@RBT解释添加。