Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
通过Where语句创建SQL组_Sql_Ms Access_Group By_Aggregate Functions - Fatal编程技术网

通过Where语句创建SQL组

通过Where语句创建SQL组,sql,ms-access,group-by,aggregate-functions,Sql,Ms Access,Group By,Aggregate Functions,我有一个MS Access表,跟踪月末的产品数量,如下所示。 我需要在指定日期生成指定ProductId的最新数量,例如。 2012年2月15日ProductId 1的数量为100,2012年3月15日ProductId 1的数量为150 ProductId | ReportingDate | Quantity| 1 | 31-Jan-12 | 100 | 2 | 31-Jan-12 | 200 | 1

我有一个
MS Access
表,跟踪月末的产品数量,如下所示。 我需要在指定日期生成指定ProductId的最新数量,例如。 2012年2月15日
ProductId 1的数量为100
,2012年3月15日
ProductId 1的数量为150

ProductId | ReportingDate | Quantity|  
1         | 31-Jan-12     | 100     |  
2         | 31-Jan-12     | 200     |  
1         | 28-Feb-12     | 150     |  
2         | 28-Feb-12     | 250     |  
1         | 31-Mar-12     | 180     |  
2         | 31-Mar-12     | 280     |
下面我的SQL语句带来所有以前的值,而不是最新的值。有人能帮我解决这个问题吗

SELECT Sheet1.ProductId, Max(Sheet1.ReportingDate) AS MaxOfReportingDate, Sheet1.Quantity
FROM Sheet1
GROUP BY Sheet1.ProductId, Sheet1.Quantity, Sheet1.ReportingDate, Sheet1.ProductId
HAVING (((Sheet1.ReportingDate)<#3/15/2012#) AND ((Sheet1.ProductId)=1))
选择Sheet1.ProductId,Max(Sheet1.ReportingDate)作为MaxOfReportingDate,Sheet1.Quantity
从第1页开始
按Sheet1.ProductId、Sheet1.Quantity、Sheet1.ReportingDate、Sheet1.ProductId分组
有((Sheet 1.ReportingDate)以下是@naveen的想法:

SELECT TOP 1 Sheet1.ProductId, Sheet1.ReportingDate AS MaxOfReportingDate, Sheet1.Quantity
FROM Sheet1
WHERE (Sheet1.ProductId = 1)
AND (Sheet1.ReportingDate < #2012/03/15#)
ORDER BY Sheet1.ReportingDate DESC

如果您选择的是单一产品,您可以使用order by并选择Top 1。您的预期输出是什么?谢谢,代码工作得很好。虽然我不知道您在评论中的意思……我理解了。数据中任何一对都只有一个ProdId日期组合,但这是我需要注意的。非常感谢@StuartLC
ProductId | ReportingDate | Quantity|  
1         | 31-Jan-12     | 100    
1         | 31-Jan-12     | 200