每次超过一组中的数字时,将一列中的每个值加一?
Add one to every value in a column each time that it exceeds the numbers in a set?
我正在处理排名危机。想象一下这样的数据:
Data
Rank
Alice
10
Bob
25
Claire
33
Dale
42
Ebony
56
Fed
68
假设我有一组值:13、35 和 49。我想遍历我的这组等级,并在每次超过该组中的某个值时为每个等级添加一个。这意味着我的最终输出将计算为:
Data
Rank
Alice
10 + 0 = 10
Bob
25 + 1 = 26
Claire
33 + 1 = 34
Dale
42 + 2 = 44
Ebony
56 + 3 = 59
Fed
68 + 3 = 71
如何实现?除非我真的必须,否则我不想写游标。我怀疑加入可以以某种方式解决这个问题。
稍微填空,但我假设你可能只在这里使用LEFT JOIN
和COUNT
:
SELECT YT.Data,
YT.Rank + COUNT(OT.OtherValue) AS Rank
FROM dbo.YourTable YT
LEFT JOIN dbo.OtherTable OT ON YT.Rank > OT.Othervalue
GROUP BY YT.Data,
YT.Rank;
我正在处理排名危机。想象一下这样的数据:
Data | Rank |
---|---|
Alice | 10 |
Bob | 25 |
Claire | 33 |
Dale | 42 |
Ebony | 56 |
Fed | 68 |
假设我有一组值:13、35 和 49。我想遍历我的这组等级,并在每次超过该组中的某个值时为每个等级添加一个。这意味着我的最终输出将计算为:
Data | Rank |
---|---|
Alice | 10 + 0 = 10 |
Bob | 25 + 1 = 26 |
Claire | 33 + 1 = 34 |
Dale | 42 + 2 = 44 |
Ebony | 56 + 3 = 59 |
Fed | 68 + 3 = 71 |
如何实现?除非我真的必须,否则我不想写游标。我怀疑加入可以以某种方式解决这个问题。
稍微填空,但我假设你可能只在这里使用LEFT JOIN
和COUNT
:
SELECT YT.Data,
YT.Rank + COUNT(OT.OtherValue) AS Rank
FROM dbo.YourTable YT
LEFT JOIN dbo.OtherTable OT ON YT.Rank > OT.Othervalue
GROUP BY YT.Data,
YT.Rank;