当前位置: 代码迷 >> Sql Server >> 合拢table中的行
  详细解决方案

合拢table中的行

热度:102   发布时间:2016-04-24 09:30:59.0
合并table中的行
请教各位大侠一个问题。

现在有张很大的表T1,关键信息简化成以下表格
co1(id)       col2(value)
1                  10.0
2                  20.0
3                  30.0
4                  40.0
...

因为1和2属于同一个组,想把2的value加到1上去,合并第1行和第2行,同理需要合并第3行和第4行
得到表格T2
co1(id)       col2(value)
1                  30.0
3                  70.0
...

小弟知道用sum和group by可以合并value,但是col1的id值不一样,没法简单的操作。
所以想请教各位有什么方法能解决这个问题。谢谢!
------解决思路----------------------
SELECT 函数(id),SUM(value)
FROM TB
GROUP BY 函数(id)

那么可以类似这样,如果这个函数认为它们是一组的,那么他们就应该返回相同的标量,根据这个标量分组
------解决思路----------------------

-- 试试这个,跟你的数据顺序没有关系 。
drop table t
go
create table t (col1 varchar(30) , col2 int)
go
insert into t (col1,col2) 
values('id1',10.0),('id2',20.0),('id3',30.0),('id4',40.0),('id5', 50.0)
go
with mt as (
select  ROW_NUMBER() over(order by getdate()) rn ,  col1, col2  
  from t 
)
select a.col1 , a.col2 , isnull(a.col2,0) + ISNULL( b.col2 , 0) result
from mt a  inner join  mt b on a.rn = b.rn - 1 
where a.rn % 2 = 1 
go
(5 行受影响)
col1                           col2        result
------------------------------ ----------- -----------
id1                            10          30
id3                            30          70

(2 行受影响)


------解决思路----------------------
那你得有个代表ID与其包含ID的表啊
  相关解决方案