如何取得group by分组后每组的第一条记录的第一个字段,取后一条记录的最后字段,并插入到新表

时间:2021-12-14 15:09:45
编号   初   入   出   末
aa    0   1    0    1
aa    1   1    0    2
aa    2   0    1    1

bb    3   1    0    4
bb    4   0    1    3
bb    3   1    0    4


想要效果

编号   初   入   出   末
aa    0   2    1    1
bb    3   2    1    4

5 个解决方案

#1


select 编号,sum(初)as '初',sum(入) as '入', sum(出) as '出', sum(末)as '末'
from t
group by   编号

#2


无解

#3


出、入可以用SUM
但是初、末不能用SUM 
初、末用 max min 也不能

#4


insert into b(编号,初,入,出,末)
select 
a.编号,
min(a.初),--- -这个地方解决不了min(取最小,不是取第一个)
sum(a.入),
sum(a.出),
max(a.末),---- 这个地方解决不了max(取最大,不是取最后)from a group by 编号
go

#5


create table t (编号 varchar(10),初 int,入 int,出 int,末 int)
go

insert into t values('aa','0','1','0','1')
insert into t values('aa','1','1','0','2')
insert into t values('aa','2','0','1','1')
insert into t values('bb','3','1','0','4')
insert into t values('bb','4','0','1','3')
insert into t values('bb','3','1','0','4')
go
select 编号,min(初) as 初,sum(入) as 入,sum(出) as 出,min(初)+sum(入)-sum(出) as 未 from t group by 编号

drop table t

#1


select 编号,sum(初)as '初',sum(入) as '入', sum(出) as '出', sum(末)as '末'
from t
group by   编号

#2


无解

#3


出、入可以用SUM
但是初、末不能用SUM 
初、末用 max min 也不能

#4


insert into b(编号,初,入,出,末)
select 
a.编号,
min(a.初),--- -这个地方解决不了min(取最小,不是取第一个)
sum(a.入),
sum(a.出),
max(a.末),---- 这个地方解决不了max(取最大,不是取最后)from a group by 编号
go

#5


create table t (编号 varchar(10),初 int,入 int,出 int,末 int)
go

insert into t values('aa','0','1','0','1')
insert into t values('aa','1','1','0','2')
insert into t values('aa','2','0','1','1')
insert into t values('bb','3','1','0','4')
insert into t values('bb','4','0','1','3')
insert into t values('bb','3','1','0','4')
go
select 编号,min(初) as 初,sum(入) as 入,sum(出) as 出,min(初)+sum(入)-sum(出) as 未 from t group by 编号

drop table t