2017-08-14 68 views
-4

我有一个表在列A中有10个唯一值,在列B中有许多不同的唯一值(一对多),还有一个在末尾(列C)的数量列I要查看列A的10个唯一值中的每一个值,并仅返回列A中每个值的列B的前10个值(使用列C确定最高值),然后将前100个结果值列B.T SQL选择前10个循环

什么是在SQL中编写这个最简单的方法?

+0

欢迎来到SO。除非你展示你试图解决这个问题,否则没有人会为你写信。 – Nipun

回答

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