下面的查询不是我的实际查询,而是它的最小化版本,因为我无法发布原始查询。然而,这解释了我想要做的事情:
Insert into TableA (BirthdateA, NameA)
Select BirthdateB, (case when NameB is not null then NameB else "Desired Value" End)
From TableB
除了增量值之外,“期望值”应该是虚拟名称,例如“虚拟名称1”,“虚拟名称2” 所以最终的结果看起来像是
TableB.Name TableA.Name
John Smith John Smith
Null Dummy Name 1
Adam James Adam James
John K. John K.
Null Dummy Name 2
这可能吗?
答案 0 :(得分:1)
你能试试吗
<sessionState mode="InProc" />
答案 1 :(得分:1)
你可以试试这个:
INSERT INTO TableA
SELECT
BirthDateB,
CASE WHEN NameB IS NULL THEN
('Dummy Name ' + CAST(DT.rn As varchar(10)))
ELSE NameB END As NameA
FROM (
SELECT
*, ROW_NUMBER() OVER (PARTITION BY NameB ORDER BY NameB) As rn
FROM
TableB) DT
注意:
我使用ORDER BY NameB
因为我不知道你的PK是什么,你可以将NameB
更改为你的PK。