首页 > 解决方案 > 如何根据唯一值将视图加入表?

问题描述

如何根据唯一值将 VIEW 加入到 TABLE 中?背景信息:从 Web 浏览器下载一个 CSV 文件,其中包含客户信息,包括送货地址和订单号。订单号是我们的唯一标识符。CSV 文件将包含我们之前已导入的重复信息。我们希望防止重复项进入我们的主表。

CSV 文件很难直接导入到 SQL 中,因此需要一些 Excel 工作,通过在每个数据字段中插入双引号来准备导入。导入进入一个表 - 每个数据字段带有双引号的 dbo.staging。每次导入都会删除现有的行。

然后,它进入一个删除双引号的视图 (dbo.cleandata)。每次导入都会删除现有的行。我们现在有了干净的数据。

从视图来看,我们现在希望将每个新订单附加到主表 (dbo.main),而不是将现有订单数据添加到主表。这就是我卡住的地方。如何将视图 dbo.cleandata 中的数据写入表 dbo.main 中不存在订单号的 dbo.main?下面的查询没有给我我们想要的结果。有什么建议么?

INSERT INTO [dbo].[main] ([bill-to-name]
      ,[order-number]
      ,[ship-to-name]
      ,[ship-to-address1]
      ,[ship-to-city]
      ,[ship-to-state]
      ,[ship-to-zip])
SELECT A.[bill-to-name]
      ,A.[order-number]
      ,A.[ship-to-name]
      ,A.[ship-to-address1]
      ,A.[ship-to-city]
      ,A.[ship-to-state]
      ,A.[ship-to-zip]
  FROM [$dsp].[dbo].[cleandata] as A
 JOIN
  [main] on [main].[order-number] = A.[order-number]
WHERE [main].[order-number] <> A.[order-number] 

标签: sql-serverjoinviewsql-insertuniqueidentifier

解决方案


    INSERT INTO [dbo].[main] ([bill-to-name]
      ,[order-number]
      ,[ship-to-name]
      ,[ship-to-address1]
      ,[ship-to-city]
      ,[ship-to-state]
      ,[ship-to-zip])
SELECT A.[bill-to-name]
      ,A.[order-number]
      ,A.[ship-to-name]
      ,A.[ship-to-address1]
      ,A.[ship-to-city]
      ,A.[ship-to-state]
      ,A.[ship-to-zip]
  FROM [$dsp].[dbo].[cleandata] as A
LEFT JOIN [main] on [main].[order-number] = A.[order-number]
WHERE [main].[order-number] IS NULL;

推荐阅读