在不使用游标的情况下,我试图提出可以完成以下任务的 T-SQL 代码:
在下表中,
SourceData
有两列,[ColA]
并且[ColB]
,两者都是nvarchar(255)
,具有以下示例数据:
ColA | ColB
==================
AAA | TripleA
TripleA | AAA
AAA | ThreeAs
ThreeAs | AAA
BBB | TripleB
TripleB | BBB
BBB | ThreeBs
ThreeBs | BBB
ETC。,
将行数据提取到两个表中,
TableA_Root
, 和TableB_Children
TableA_Root
这些列在哪里:[ROID identity], [Root]
并TableB_Children
有这些列:[COID identity],[fKey_ROID],[Child]
这样结果表就具有这样的示例数据:
TableA_Root
==============
1 | AAA
2 | BBB
TableB_Children
===============
1 | 1 | TripleA
2 | 1 | ThreeAs
3 | 2 | TripleB
4 | 2 | ThreeBs
起初,我以为我会使用光标。但是,我敢肯定,这不是最佳方法。显然,这是一种排序和合并,我可以在 SQL 之外进行。我尝试过使用“IN”或“EXISTS”的子查询的一些想法,但我的尝试失败了。我可以用一个新的视角。