T SQL选择前10个循环

时间:2017-08-14 04:07:44

标签: sql-server loops tsql

我有一个表在A列中有10个唯一值,在B列中有更多不同的唯一值(一对多),以及最后一个量列(C列)我想要循环A列的10个唯一值中的每一个,并且仅返回列A中每个值的列B的前10个值(使用列C确定最高值),然后获取列B的前100个结果值。

在SQL中编写此内容的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

如果您正在考虑循环和SQL,那么您正在寻找错误的地方。几乎总有一种方法可以编写基于集合的查询,避免循环,运行速度更快,更易于编写和维护。一个很好的例子:

SELECT t1.[A], t2.[B], t2.[C]
FROM (SELECT DISTINCT [A] FROM [table]) t1
CROSS APPLY 
(
    SELECT TOP 10 [B], [C] FROM [Table] t0 WHERE t0.[A] = t1.[A] ORDER BY [C] DESC
) t2