4
我有两个表是这样的:递归INSERT查询
Table1ID Table2ID Table1ID SomeDate
-------- ------------------------------
1 1 1 2011-01-01
2 2 1 2011-01-02
3 3 2 2011-01-01
4 4 3 2011-01-01
5 3 2011-01-02
6 3 2011-01-03
7 4 2011-01-01
8 4 2011-01-02
我需要插入值到第三个表,让我从表2这两个值,以及分组“序列”值在Table1ID上。我试过这个,但我总是得到序列值为1。
;WITH Sequences AS (
SELECT t1.Table1ID,
MAX(ISNULL(t3.Sequence, 0)) AS [MaxSequence]
FROM Table1 t1
LEFT JOIN Table3 t3 (NOLOCK) ON t1.Table1ID = t3.Table1ID
GROUP BY t1.Table1ID
)
INSERT INTO Table3 (Table1ID, Table2ID, Sequence)
SELECT t1.Table1ID,
t2.Table2ID,
s.MaxSequence + 1
FROM Table1 t1 (NOLOCK)
JOIN Table2 t2 (NOLOCK) ON t1.Table1ID = t2.Table2ID
JOIN Sequences s ON t2.Table1ID = s.Table1ID
ORDER BY t2.SomeDate
我要的是一个结果集是这样的:
Table2ID Table1ID Sequence
------------------------------
1 1 1
2 1 2
3 2 1
4 3 1
5 3 2
6 3 3
7 4 1
8 4 2
我知道我可能失去了一些东西太简单在这里,但我坚持。
*嫌额头*当然自我!忘记ROW_NUMBER()... OVER。谢谢,像魅力一样工作。 –