我有下表:
----------------------------------------------
oNumber oValue1
----------------------------------------------
1 54
2 44
3 89
4 65
ff.
10 33
11 22
ff.
20 43
21 76
ff.
100 45
我想在oNumber
中选择每10个值。所以结果应该是:
----------------------------------------------
oNumber oValue1
----------------------------------------------
10 33
20 43
ff.
100 45
此外,oNumber
不是序列号。它只是一个价值。即使它不是序列号,10,20,30等也总是出现在oNumber
字段下。
有谁知道这种情况下tsql是怎么回事? 谢谢。
答案 0 :(得分:8)
select * from table where oNumber % 10 = 0
答案 1 :(得分:5)
使用"Modulo" operator - %
。所以在这种情况下,答案就是:
SELECT * FROM table WHERE oNumber % 10 = 0
只有当oNumber是一个可被10整除的数字(因此其余值为零)时才会加载。
答案 2 :(得分:2)
如果您只想要10的倍数,那么只需使用Daniel和Ian所述的模运算符。
select *
from table
where oNumber % 10 = 0;
然而,我觉得你可能暗示你想要获得列表中的每个第10项。如果情况确实如此,那么您只需根据oNumber
对您的集合进行排序,并使用模运算符。
select *
from (
select *,
RowNum = row_number() over (order by oNumber)
from table) a
where RowNum % 10 = 0;