【发布时间】:2017-11-06 18:03:57
【问题描述】:
我想选择一个分区的最小 ID。有点像 dense_rank 的工作方式我想要一个与每个分区关联的唯一编号,但我希望该编号成为分区中的最小主键。这是我所追求的一个例子。
USE AdventureWorks2012;
GO
SELECT '276 or 289 depending on what partition' as 'Min_BusinessEntityID'
,s.BusinessEntityID
,p.LastName
,s.SalesYTD
,a.PostalCode
FROM Sales.SalesPerson AS s
INNER JOIN Person.Person AS p
ON s.BusinessEntityID = p.BusinessEntityID
INNER JOIN Person.Address AS a
ON a.AddressID = p.BusinessEntityID
WHERE TerritoryID IS NOT NULL
AND SalesYTD <> 0
ORDER BY PostalCode, SalesYTD DESC
【问题讨论】:
-
如果它只有 2 个值,那么
CASE WHEN语句可能比其中一个窗口函数更容易 -
在我的现实世界实现中通常会有数千个值。
标签: sql-server tsql partition-by over-clause