使用基于某些参数的连接插入到表中

时间:2015-09-04 14:44:58

标签: sql sql-server tsql sql-server-2012

我的表格如下:

select Jgrelhas from Jgrelhas
where id IN   
(select id from Jgrelhas
where jtabuleiros.id=? and id<? order by id desc )
order by id asc

每个 TableA ID |SEQ |CODE ======|====|========= Item1 |1 |A Item1 |2 |B Item2 |1 |A Item2 |2 |B Item2 |3 |C Item3 |1 |B Item4 |1 |C ID中为其应用的每个SEQ增加1,具体取决于应用的顺序。我正在尝试为此表添加更多数据以获取新代码,并希望将其添加到第二个表中的某组项目中,作为该项目的最新序列号。到目前为止我有什么

CODE

这段代码显然不起作用,我无法用一个词或短语来描述我试图搜索它的内容,所以我想我会问。

2 个答案:

答案 0 :(得分:0)

我不确定理解你的问题,但你可以说这次尝试有什么不对。

Insert into TableA
(ID, Seq, Code)
Select TableB.ID, 
       Seq2 = isnull((select max(TableA.Seq)+1 from TableA where TableA.ID=TableB.ID),1),
       TableB.Code
From TableB

答案 1 :(得分:0)

基于我对您的要求的理解(几乎没有假设),希望以下帮助

CREATE TABLE #SO_32400879 (ID NVARCHAR(10),SEQ NVARCHAR(10), CODE NVARCHAR(10))
INSERT INTO #SO_32400879 VALUES ('Item1','1','A')
INSERT INTO #SO_32400879  VALUES ('Item1','2','B')

INSERT INTO #SO_32400879  VALUES ('Item2','1','A')
INSERT INTO #SO_32400879  VALUES ('Item2','2','B')
INSERT INTO #SO_32400879  VALUES ('Item2','3','C')

INSERT INTO #SO_32400879  VALUES ('Item3','1','A')

INSERT INTO #SO_32400879  VALUES ('Item4','1','A')


CREATE TABLE #Temp (ID NVARCHAR(10), CODE NVARCHAR(10))
INSERT INTO #Temp VALUES ('Item1','C')
INSERT INTO #Temp VALUES ('Item1','D')
INSERT INTO #Temp VALUES ('Item1','E')
INSERT INTO #Temp VALUES ('Item2','D')
INSERT INTO #Temp VALUES ('Item3','B')
INSERT INTO #Temp VALUES ('Item4','B')
INSERT INTO #Temp VALUES ('Item4','C')


INSERT INTO #SO_32400879 (id,SEQ,CODE)
SELECT t.ID,(SELECT MAX(s.SEQ) FROM #SO_32400879 s WHERE s.ID= t.ID ) + ROW_NUMBER()OVER (PARTITION BY ID ORDER BY ID) AS SEQ, t.CODE 
FROM #Temp t

SELECT * FROM #SO_32400879 ORDER BY 1,2
DROP TABLE #SO_32400879 
DROP TABLE #Temp

输出如下:

ID   |SEQ|CODE
=====|===|==
Item1|1  |A
Item1|2  |B
Item1|3  |C
Item1|4  |D
Item1|5  |E
Item2|1  |A
Item2|2  |B
Item2|3  |C
Item2|4  |D
Item3|1  |A
Item3|2  |B
Item4|1  |A
Item4|2  |B
Item4|3  |C