日期:2014-05-17  浏览次数:20492 次

SQL表插入的问题
现有tableA
单别  单号  变更版本号
1     2      1
1     2      2
2     3      1
4     5      1
2     4      1
2     4      2
2     4      3
2     2      1
单别不一样,可能单号一样,变更版本号依次累加
现在有TABLEB
单别   单号
1     2
2     2
2     4
想要插入TABLEA,并且变更版本累加
求大神  
SQL 累加 插入 最大值

------解决方案--------------------
with tb as
(
select b.*, MAX(a.变更版本号)  + 1 as aaa from b
inner join A on a.单别 = b.单别
and a.单号 = b.单号
group by b.单别, b.单号
)
insert into a
select * from tb
------解决方案--------------------
INSERT  TABLEA(单别,单号,变更版本号)
SELECT b.单别,b.单号,isnull(max(a.变更版本号),0)+1
FROM TABLEB b left  join TABLEA a
on   a.单别 = b.单别
and a.单号 = b.单号

------解决方案--------------------
insert into tableA select B.单别,B.单号,max(A.变更号)+1 from tableA A join tableB B on A.单别=B.单别 and A.单号=B.单号 group by B.单别,B.单号

------解决方案--------------------
引用:
Quote: 引用:

INSERT  TABLEA(单别,单号,变更版本号)
SELECT b.单别,b.单号,isnull(max(a.变更版本号),0)+1
FROM TABLEB b left  join TABLEA a
on   a.单别 = b.单别
and a.单号 = b.单号

少了聚合的函数,另外我的变更版本号是字符串0001,0002现在这样变成数字了,怎么办


呵呵,改了一下,试试:
INSERT  TABLEA(单别,单号,变更版本号)
SELECT b.单别,b.单号,
       right('000'+cast(isnull(max(a.变更版本号),0)+1 as varchar),3)
FROM TABLEB b left  join TABLEA a
on   a.单别 = b.单别
and a.单号 = b.单号
GROUP BY b.单别,b.单号