SQL Server:如何获取每个公共值集的行号?

时间:2009-10-15 10:43:20

标签: sql-server-2005

说我的桌子是这样的......

`
Tenancy Number    Tenant Number    Tenant
1                   1               John
1                   2               Jane
1                   3               Pete
2                   56              Fred
2                   78              Jackie

如何根据tenany号码分组选择rownumber?到目前为止,我可以获得行号,但我无法找到一种方法来“重置”下一个租期号码。

我想取得以下成果

MYROWNUM         Tenancy Number    Tenant Number        Tenant
    1                1                   1               John
    2                1                   2               Jane
    3                1                   3               Pete
    1                2                   56              Fred
    2                2                   78              Jackie

很抱歉,如果我没有解释得这么好!

谢谢!

3 个答案:

答案 0 :(得分:5)

SELECT ROW_NUMBER() OVER (PARTITION BY [Tenancy Number]
                          ORDER BY [Tenant Number]
                         ) AS myrownum
       ,[Tenancy Number]
       ,[Tenant Number]
       ,Tenant
from <table>

答案 1 :(得分:4)

您可以使用row_number()功能。

示例:

 SELECT 
    SalesOrderID, OrderDate, 
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
 FROM 
    Sales.SalesOrderHeader 

HTH

答案 2 :(得分:3)

使用Row_Number()函数:

DECLARE @t TABLE (TenancyNbr smallint, TenantNbr smallint, Tenant varchar(10))
INSERT INTO @t
SELECT 1,1,'Jack'
UNION ALL SELECT 1,2,'Janet'
UNION ALL SELECT 1,3, 'Chrissy'
UNION ALL SELECT 2,56, 'Mr. Roper'
UNION ALL SELECT 2,78, 'Mrs. Roper'


SELECT MyRowNum = ROW_NUMBER() OVER (PARTITION BY TenancyNbr ORDER BY TenantNbr),
    TenancyNbr, TenantNbr, Tenant
FROM @t