如果字段满足条件,则重复ROW_NUMBER

时间:2015-02-18 00:23:20

标签: sql-server tsql

如果满足条件,我需要ROW_NUMBER将数据分配给特定用户。

ROW_NUMBER将正常递增,直到找到重复值。找到重复值后,我需要它使用相同的ROW_NUMBER,直到找到新值。

例如......

使用时

SELECT ROW_NUMBER() OVER (ORDER BY COMPANY) AS rownum
      ,Company
      ,Contact
  FROM TABLE

我们显然可以期待这个结果

rownum     Company              Contact
     1     BOB'S BURGERS        BOB
     2     STEVE'S SARDINES     STEVE
     3     STEVE'S SARDINES     JERRY
     4     STEVE'S SARDINES     MARY
     5     LARRY's LOBSTER      LARRY
     6     CHRIS' COWS          CHRIS

我想要的是这个。每当公司名称​​不更改时,重复ROW_NUMBER并在公司更改时继续增加数字

rownum     Company              Contact
     1     BOB'S BURGERS        BOB
     2     STEVE'S SARDINES     STEVE
     2     STEVE'S SARDINES     JERRY
     2     STEVE'S SARDINES     MARY
     3     LARRY'S LOBSTER      LARRY
     4     CHRIS' COWS          CHRIS

我正在使用此条件查看该公司是否与之前的公司名称相符。如果条件为真,则返回2

ROW_NUMBER() OVER (PARTITION BY COMPANY ORDER BY COMPANY) AS SameCompany

1 个答案:

答案 0 :(得分:7)

您希望DENSE_RANK不是ROW_NUMBER。试试这个:

SELECT DENSE_RANK() OVER (ORDER BY COMPANY) AS rownum
      ,Company
      ,Contact
  FROM TABLE