选择每十步SQL

时间:2016-06-24 00:38:35

标签: sql sql-server tsql sql-server-2008-r2

我有下表:

----------------------------------------------
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是怎么回事? 谢谢。

3 个答案:

答案 0 :(得分:8)

select * from table where oNumber % 10 = 0

https://msdn.microsoft.com/en-us/library/ms190279.aspx

答案 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;