的总和后,我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中进行选择。我更期待一些SQL函数。也许ROW_NUMBER是个好主意,但我不知道如何在这种情况下应用它。
您可能需要在接受的解决方案看这里:http://stackoverflow.com/questions/14478361/sum-with-sql -server-rollup-but-only-last-summary –
@ PM77-1否。该问题不同。 –
你的结果集有2个字段,你的查询有5个字段,而非1的字段出现在另一个字段中:P所以我不确定两者之间的关系现在... – funkwurm