这个问题是为那些比我有更多 SQL 经验的人准备的。
我正在编写一个查询(最终将是一个存储过程,但这应该是无关紧要的),如果最近的条目等于之前输入的那个,我想在其中选择行数。我想继续这样做,直到它遇到具有不同值的条目。(解释得不好,所以我将展示这个例子)
在我的表中,我有一列“Product_Id”,当运行此查询时,我希望它获取 product_id 并将其与先前输入的产品 ID 进行比较,如果它相同,我想添加一个,并且我希望它继续检查之前输入 product_id 直到遇到不同的 product_id
我希望它听起来比它更复杂,查询看起来像
Select count(Product_ID)
FROM dbo.myTable
Where Product_Id = previous(Product_Id)
现在,我知道previous 不是TSQL 中的关键字,Last 也不是,但我希望有人知道我所要求的关键字。
为山姆编辑
USE DbName; GO WITH OrderedCount as ( select ROW_NUMBER() OVER (Order by dbo.Line_Production.Run_Date DESC) as RowNumber, Line_Production.Product_ID From dbo.Line_Production ) Select RowNumber, COUNT(OrderedCount.Product_ID) as PalletCount From OrderedCount WHERE OrderedCount.RowNumber + 1 = RowNumber and Product_ID = Product_ID Group by RowNumber
OrderedCount 部分有效,它以我想要的方式返回数据,我现在无法比较不同 RowNumbers 的 Product_ID
我的 Where 子句是错误的