2017-08-14 65 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