Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql最近日期_Sql_Date - Fatal编程技术网

sql最近日期

sql最近日期,sql,date,Sql,Date,我有两个表——tblDividendData和tblStockPrice——我一直在尝试构造一个查询,从tblDividendData中提取字段,并从tblStockPrice中提取最近的收盘价。我不是SQL大师,所以我在这里分享我的尝试时有些担心,但我花了几个小时在这上面,似乎尝试了所有的东西,我无法让它返回正确的结果。我的质询如下: SELECT tblDividendData.divOrganization, tblDividendData.divExDividendDate,

我有两个表——tblDividendData和tblStockPrice——我一直在尝试构造一个查询,从tblDividendData中提取字段,并从tblStockPrice中提取最近的收盘价。我不是SQL大师,所以我在这里分享我的尝试时有些担心,但我花了几个小时在这上面,似乎尝试了所有的东西,我无法让它返回正确的结果。我的质询如下:

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条记录,它很有魅力,所以访问限制/问题肯定是存在的。