私ORDER BY cnt DESC
の結果は
fld1 cnt
A 9
E 8
D 6
C 2
B 2
F 1
次のように、上位 3 つを表示し、残りを「その他」として合計する必要があります。
fld1 cnt
A 9
E 8
D 6
other 5
編集:
ご意見をお寄せいただきありがとうございます。実際のステートメントを見ると役立つかもしれません:
SELECT
CAST(u.FA AS VARCHAR(300)) AS FA,
COUNT(*) AS Total,
COUNT(CASE WHEN r.RT IN (1,11,12,17) THEN r.RT END) AS Jr,
COUNT(CASE WHEN r.RT IN (3,4,13) THEN r.RT END) AS Bk,
COUNT(CASE WHEN r.RT NOT IN (1,11,12,17,3,4,13) THEN r.RT END ) AS Other
FROM R r
INNER JOIN DB..RTL rt
ON r.RT = rt.RTID
INNER JOIN U u
ON r.UID = u.UID
WHERE rt.LC = 'en'
GROUP BY CAST(u.FA AS VARCHAR(300))--FA is ntext
ORDER BY Total DESC
生成された結果には 19 のレコードがあります。トップ 5 を表示し、残りを「その他の FA」として合計する必要があります。この種のステートメントで select from a select を実行したくありません。私はいくつかのSQL関数をもっと探しています。ROW_NUMBER は良い考えかもしれませんが、この場合に正確に適用する方法がわかりません。