2

我有这个项目表存储在 SQL Server 数据库中:

ID_Item   | ID_Sale  | ID_Product |
1         | 200      | 2314       |
2         | 200      | 3894       |
3         | 200      | 4949       |
4         | 100      | 9389       |
5         | 100      | 9499       |
6         | 300      | 9388       |

我需要获取“ID_Sale”列的最后一条记录。这些记录如下:

ID_Item   | ID_Sale  | ID_Product |
3         | 200      | 4949       |
5         | 100      | 9499       |
6         | 300      | 9388       |

我正在尝试这段代码,但它只获取一条记录:

Select Top 1 * From Itens 
Where ID_Sale = 200
Order by ID_Item Desc

如何获得遍历整个表的结果?

4

2 回答 2

1
SELECT ID_Item, ID_Sale, ID_Product 
FROM Tbl
WHERE Id_Item IN
         (
             SELECT Max(Id_Item) Id
             FROM Tbl
             WHERE [DateTime] BETWEEN @StartDate AND @EndDate
             GROUP BY Id_Sale
          )

如果您使用 SQL SERVER 2005+

;WITH CTE
AS
(
   SELECT ID_Item, ID_Sale, ID_Product, ROW_NOUMBER() OVER (PARTITION BY ID_Sale ORDER BY ID_Item DESC) RN
   FROM Tbl
   WHERE [DateTime] BETWEEN @StartDate AND @EndDate
)
SELECT ID_Item, ID_Sale, ID_Product
FROM CTE
WHERE RN = 1
于 2013-01-16T23:08:46.037 回答
0

哟可以简单地使用这个查询

    select * from Item where ID_Item in(
select MAX(ID_Item) as ID_Item from Item group by ID_Sale)
于 2013-01-17T05:33:49.253 回答