如果字段满足条件,则让 ROW_NUMBER 重复
Getting ROW_NUMBER to repeat if field meets a condition
如果满足条件,我需要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
我正在使用此条件来查看公司是否与以前的公司名称匹配。它 returns 如果条件为真则为 2
ROW_NUMBER() OVER (PARTITION BY COMPANY ORDER BY COMPANY) AS SameCompany
你想要 DENSE_RANK 而不是 ROW_NUMBER。试试这个:
SELECT DENSE_RANK() OVER (ORDER BY COMPANY) AS rownum
,Company
,Contact
FROM TABLE
如果满足条件,我需要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
我正在使用此条件来查看公司是否与以前的公司名称匹配。它 returns 如果条件为真则为 2
ROW_NUMBER() OVER (PARTITION BY COMPANY ORDER BY COMPANY) AS SameCompany
你想要 DENSE_RANK 而不是 ROW_NUMBER。试试这个:
SELECT DENSE_RANK() OVER (ORDER BY COMPANY) AS rownum
,Company
,Contact
FROM TABLE