【问题标题】:Select Min ID in a partition - MSSQL t-SQL选择分区中的最小 ID - MSSQL t-SQL
【发布时间】: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

Result Set Example

【问题讨论】:

  • 如果它只有 2 个值,那么 CASE WHEN 语句可能比其中一个窗口函数更容易
  • 在我的现实世界实现中通常会有数千个值。

标签: sql-server tsql partition-by over-clause


【解决方案1】:

SQL Server MIN 命令接受 OVER() 子句:

SELECT MIN(s.BusinessEntityID) OVER (PARTITION BY TerritoryID) AS Min_BusinessEntityID
FROM ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多