如何拆分前4行并将剩余记录相加并显示为最后一条记录

时间:2014-04-02 08:39:31

标签: sql sql-server sql-server-2008

我有一张如下表格

col1    col2    col3
i1        23      36
i2        48      21
i3        28       4
i4       349      12
…       
…       
i200     287      32

现在,如何获得如下结果

col1    col2              col3
i1        23                36
i2        48                21
i3        28                 4
i4       349                12
>i4      (sum of            (sum of remaining)
         col2 remaining)

请帮帮我。 感谢

2 个答案:

答案 0 :(得分:2)

您需要按计算字段进行分组,如下所示:

WITH cte (col1, col2, col3) AS (
    SELECT
        CASE
            WHEN col1 IN ('i1','i2','i3','i4') THEN col1
            ELSE '>i4'
        END AS col1
    ,   col2
    ,   col3
    FROM my_table
)
SELECT col1, SUM(col2) AS col2, SUM(col3) AS col3
FROM cte
GROUP BY col1

上述查询使用Common Table Expression (CTE)功能来避免多次指定相同的表达式。

答案 1 :(得分:1)

这可能会有所帮助

select col1,col2,col3 from dbo.t3 where col1<='i4'
union
select '>i4',SUM(col2),SUM(col3) from dbo.t3 where col1>'i4'