How to select top multiple of 10 entries?

时间:2017-04-10 02:55:40

标签: sql sql-server-2014

How to select top multiple of 10 entries?

I have a data in SQL table that is meaningful if only seen as bunch of 10 entries. I want to write a query that does this for ex. Select top 10*n from table where condition.

If for ex. 53 entries satisfy condition, I want only 50 to be seen and last 3 to be discarded.

Plz help. Kbv

3 个答案:

答案 0 :(得分:0)

How about:

declare @rows int;
set @rows = ((select count(*) from table where condition)/10)*10

select top @rows * from table where condition

答案 1 :(得分:0)

Try this:

with CTE AS (
    SELECT * FROM Table WHERE Condition
)
Select top(((SELECT COUNT(*) FROM CTE)/10)*10) * From CTE

答案 2 :(得分:0)

请考虑以下内容......

SELECT orderField,
       field1,
       ...
FROM tblTable
WHERE condition
ORDER BY orderField
LIMIT 10 * numberOfGroups;

构建查询时,首先要确定所需的字段。在一个简单的表查询中,您可以相当安全地使用SELECT *,但如果您指的是JOIN数据集,则应考虑指定要使用的字段并为这些字段指定别名。

确保无论您orderFieldorderFields被调用,它们都会被*等通配符覆盖,或者明确指定。

上述代码首先选择符合您criteria的所有记录。然后,它会根据您为ORDER BY指定的字段对结果列表进行排序。注意:以上假设您要根据表中的现有值进行排序。如果需要根据计算值进行排序,则可能需要添加另一个(次要)复杂度级别。

然后,

LIMIT将从排序列表中获取第一个指定数量的记录。 LIMIT仅接受计算值,例如2 * 210 * numberOfGroups,其中numberOfGroups是先前在代码中设置的变量或显式替换numberOfGroups的值(即10 * @numberOfGroups其中@numberOfGroups之前已设置为510 * 5。{/ p>

如果您有任何问题或意见,请随时发表评论。