【发布时间】:2012-12-12 15:39:08
【问题描述】:
这个问题是为那些比我有更多 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 也不是,但我希望知道关键字的人可以满足我的要求。
-
为 Sam 编辑
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 部分可以正常工作,它会以我想要的方式返回数据,我现在无法比较不同 RowNumber 的 Product_ID
我的 Where 子句是错误的
【问题讨论】:
-
您的问题非常不清楚,您可以发布一些示例数据和预期结果吗?理想情况下,发布
CREATE TABLE和INSERT语句,其他人只需复制和粘贴即可进行测试。 -
我不能真正添加插入,因为这是在我的 vb.net 应用程序中使用的,并且存储过程会根据需要一次添加一行。