在单个insert语句中添加增量值

时间:2015-04-26 08:12:01

标签: sql-server

下面的查询不是我的实际查询,而是它的最小化版本,因为我无法发布原始查询。然而,这解释了我想要做的事情:

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

这可能吗?

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。