SQL server 用ROW_NUMBER() 函数查看第一次和最后一次的数量(qty)和销售额(moneys)
时间: 2024-12-12 12:16:35 浏览: 18
SQL Server 的 `ROW_NUMBER()` 函数通常用于对数据集进行分组并分配行序号,但它本身并不直接用于计算次数或特定值的范围,比如首次和最后的 `qty` 和 `moneys`。不过,你可以结合其他窗口函数如 `MIN()` 和 `MAX()` 来实现这个需求。
假设你有一个名为 `Sales` 的表,包含字段 `OrderID`, `ProductID`, `Qty`, 和 `Money`,你可以编写这样的查询:
```sql
WITH Sales_Ranked AS (
SELECT
OrderID,
ProductID,
Qty,
Money,
ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY OrderID) as RowNum
FROM Sales
)
SELECT
ProductID,
MIN(Qty) as FirstQty,
MAX(Qty) as LastQty,
MIN(Money) as FirstMoney,
MAX(Money) as LastMoney
FROM Sales_Ranked
GROUP BY ProductID
ORDER BY ProductID;
```
这个查询首先按 `ProductID` 分区,并根据 `OrderID` 排序(理论上最早和最晚的订单)。然后在每个分区中找到 `Qty` 和 `Money` 的最小值(代表第一次)和最大值(代表最后一次)。结果将按 `ProductID` 排列。
阅读全文