sql最近日期
我有两个表——tblDividendData和tblStockPrice——我一直在尝试构造一个查询,从tblDividendData中提取字段,并从tblStockPrice中提取最近的收盘价。我不是SQL大师,所以我在这里分享我的尝试时有些担心,但我花了几个小时在这上面,似乎尝试了所有的东西,我无法让它返回正确的结果。我的质询如下:sql最近日期,sql,date,Sql,Date,我有两个表——tblDividendData和tblStockPrice——我一直在尝试构造一个查询,从tblDividendData中提取字段,并从tblStockPrice中提取最近的收盘价。我不是SQL大师,所以我在这里分享我的尝试时有些担心,但我花了几个小时在这上面,似乎尝试了所有的东西,我无法让它返回正确的结果。我的质询如下: SELECT tblDividendData.divOrganization, tblDividendData.divExDividendDate,
SELECT tblDividendData.divOrganization,
tblDividendData.divExDividendDate,
(SELECT Close
FROM tblStockPrice s
WHERE Date = ( SELECT MAX(Date)
FROM tblStockPrice
WHERE s.Date <= tblDividendData.divExDividendDate
AND s.CompanyID=tblDividendData.divOrganization)) AS Close
FROM tblDividendData
这将为收盘价字段返回一些数据,但这并不正确:似乎只有当divExDividendDate大于所有tblStockPrice.Date时,才会返回tblStockPrice.Close
我真的很感激你能帮我解释为什么我不能让它工作。我在这里使用模式和查询设置了一个SQLFIDLE:
该查询在SQLFiddle上运行,但我注意到,它将访问权带到了我实际将其放在一起的地方 你很接近。尝试以下SQL:
SELECT tblDividendData.divOrganization,
tblDividendData.divExDividendDate,
(SELECT Close
FROM tblStockPrice s
WHERE Date = ( SELECT MAX(Date)
FROM tblStockPrice
WHERE Date <= tblDividendData.divExDividendDate
AND CompanyID=tblDividendData.divOrganization)
AND CompanyID=tblDividendData.divOrganization
) AS Close
FROM tblDividendData
有两个问题:
在查找MAXDate的子查询中,使用了s。WHERE子句中的前缀。这是不正确的,因为它与外部查询中的表匹配。这可能是它访问速度慢的一个原因
找到MAXDate后,您需要再次按CompanyID进行筛选
谢谢,大卫。非常感谢!然而,有趣的是,根据您的SQL,即使没有“s”别名,它似乎仍然会使访问阻塞。我想我还得再调查一下……嗯。在Postgresql中尝试了这一点,表中的完整数据超过了tblStockPrices中的4000条记录,它很有魅力,所以访问限制/问题肯定是存在的。