根据DISTINCT值插入“n”行并填充新的行值

时间:2017-06-26 12:22:46

标签: sql sql-server insert-into

我有一个表(邮件),其中包含一个字段(文件名),该字段在所有记录中都有3个不同的值。假设值是:

File1中
文件2
file3的

我需要根据这些不同的值将另一个表(Seeds)中的记录插入到所述Mailing表中,然后使用这些值插入到Mailing表中来更新Filename字段。

所以,如果我要插入1条记录,我将最终插入相同的记录3次,每次记录都有不同的值。

为了帮助提供一些上下文,这是我的基本INSERT INTO声明:

INSERT INTO dbo.mailing (
    Filename,
    Title,
    Forename,
    Surname,
    Address1,
    Address2,
    Address3,
    Address4,
    Address5,
    Address7)
SELECT
    '?' AS Filename,
    Title,
    Forename,
    Surname,
    Company,
    Address1,
    Address2,
    Address3,
    Address4,
    Postcode
FROM dbo.Seeds AS S
WHERE S.URN = 1

我显然已将文件名硬编码为?目前。我希望这有道理吗?。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,filename中有seeds字段。如果是这样,您可以在其上附加一个数字:

SELECT Filename + cast(row_number() over (partition by filename order by filename) as varchar(255)) as Filename,
       . . . 
FROM dbo.Seeds S
WHERE S.URN = 1;