是否可以构建一个SQL查询,只输出n行数,并将返回的n+1第四行的其余列加起来。
例如,我有两个从sql查询返回的列。第一列是名称,第二列包含计数值。名字是不同的,计数是数字。
查询应该只返回3行,如果有3行以上,则所有行都应该加到第四行,其名称为“Other”,其余行的计数总和为第四行。
请帮帮我。提前谢谢。
(例如)
表
名称\\#.值
第一至第十二
第二- 11
第三-9
第四- 15
第五- 13
第六至第八次
查询结果
名称\\#.值
第一至第十二
第二- 11
第三-9
其他- 36
发布于 2014-01-27 06:40:55
我相信它看起来会是:
SELECT DISTINCT TOP 3 Col1, Col2
FROM Table除非你想要有第二列的东西,否则它将是
SELECT DISTINCT TOP 3 Col1, Count(Col2) AS "New Name"
FROM Table
GROUP BY Col1如果您想要第四行,那么使用另一个使用偏移量的select语句执行UNION,这样就可以选择除前3以外的所有行。
重读你问题的第一部分,如果你想要改变上面的数字,你很可能需要把它作为一个存储过程,通过一个变量来控制顶部的数字并抵消。使用这作为参考。
发布于 2014-01-27 06:41:50
尝试GROUP BY...WITH ROLLUP将n+1行中的所有行数之和。试试下面的例子。
SELECT IFNULL(a.id, 'Other'), SUM(1) ids
FROM tableA
GROUP BY a.id WITH ROLLUP发布于 2014-01-27 07:19:53
Could you try something like this :
select case(name)
when 'First' THEN 'First'
when 'Second' THEN 'Second'
when 'Third' THEN 'Third'
else 'Others'
end name, sum(value) value
from table
group by case(name)
when 'First' THEN 'First'
when 'Second' THEN 'Second'
when 'Third' THEN 'Third'
else 'Others'https://stackoverflow.com/questions/21374302
复制相似问题