我有一个表table1
可能是这样的,凡有可能在2场重复Cnumber
和Dob
再独特pkSID
:
pkSID Cnumber Dob
1 12345 01/02/2002
2 12345 01/02/2002
3 12345 01/02/2002
4 12345 01/02/2002
5 12345 01/02/2002
在中可能会多次出现这种情况table1
。然后,我有另一个表引用pkSID
,并且我想合并这些行,以便它们都只引用pkSID
in中的一个table1
,因此table2
最初看起来像这样:
pkSTID fkSID OtherVal1 OtherVal2
1 1 s x
2 2 t f
3 3 a d
4 4 v g
5 5 b z
然后合并后:
pkSTID fkSID OtherVal1 OtherVal2
1 1 s x
2 1 t f
3 1 a d
4 1 v g
5 1 b z
我如何找到这些行table1
然后合并到其中table2
?
试试看:
注意:我正在考虑pkSID相对于Cnumber和Dob是连续的
CREATE TABLE #TABLE1(pkSID INT,Cnumber INT,Dob DATE)
INSERT INTO #TABLE1
SELECT 1, 12345, '01/02/2002' UNION ALL
SELECT 2, 12345, '01/02/2002' UNION ALL
SELECT 3, 12345, '01/02/2002' UNION ALL
SELECT 4, 12345, '01/02/2002' UNION ALL
SELECT 5, 12345, '01/02/2002'
CREATE TABLE #TABLE2(pkSTID INT,fkSID INT,OtherVal1 VARCHAR(10),OtherVal2 VARCHAR(10))
INSERT INTO #TABLE2
SELECT 1, 1, 's', 'x' UNION ALL
SELECT 2, 2, 't', 'f' UNION ALL
SELECT 3, 3, 'a', 'd' UNION ALL
SELECT 4, 4, 'v', 'g' UNION ALL
SELECT 5, 5, 'b', 'z'
SELECT T2.pkSTID, T3.min_pkSID fkSID, T2.OtherVal1 , T2.OtherVal2
FROM #TABLE2 T2
INNER JOIN
(
SELECT MIN(T1.pkSID) min_pkSID, MAX(T1.pkSID) max_pkSID FROM #TABLE1 T1 GROUP BY T1.Cnumber, T1.Dob --T1 ON T2.fkSID = T1.pkSID
)T3
ON T2.fkSID BETWEEN T3.min_pkSID AND T3.max_pkSID
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句