SQL比较表和视图的数据

时间:2016-04-25 18:57:11

标签: sql sql-server view compare

假设我有表A,每隔几分钟就有一个数据。对于产品表的示例,A可以具有类似下面的数据

  • 1/4/2016 00:04:00 - 15
  • 1/4/2016 00:08:23 - 10
  • 1/4/2016 04:18:43 - 17
  • 1/6/2016 06:06:24 - 5等...

然后我有一个视图来计算每天每个产品的平均值。 例如:

  • Product1 1/4/2016 - 30
  • Product1 1/5/2016 - 60
  • Product2 1/8/2016 - 40

我有大约10000个产品,并且必须计算大约30列的平均值。大致我将有6个月的数据。因此视图将返回大量行。

现在我需要编写一个SQL作业,它将每小时执行一次并从上面的视图中获取数据并将数据插入到新表中(表B)。表B具有与视图完全相同的模式。我已经用作业步骤编写了MERGE语句,并成功地将数据插入/更新到表B.

我的问题是完成这项工作需要几个小时。问题是视图有所有6个月的数据和插入,如果它不在目标表上并更新,如果它已经在目标表上。我不想这样做,因为我的旧数据不会改变。如何只获取表B中没有的数据并插入/更新它们?换句话说,如何仅从视图中获取尚未添加且不相同的数据。 (我尝试了EXCEPT语句并没有运气,因为我必须比较所有30列)

P.S我将ProductID和ProductionDate作为表B中的primaryKey。

0 个答案:

没有答案