2015-10-05 82 views
1

我有一张客户信息表 - [Customer Alignments]即主表。更新一个表中的字段(如果另一个表中的字段不相等)

在处理过程中,还有另一个表格可以帮助客户编辑客户信息。这就是所谓的[tCC Master]

所以,我想这样做是借此[tCC Master]表和检查,看看是否在[Customer Number][Therapy]字段的信息从[Customer Alignments]不同。如果他们这样做,我想更新这些字段从[tCC Master]

显示新[Customer Number]和/或[Therapy]即:

[Customer Alignments] 

- Number - Therapy - Location Number 
- 1 - ABC - 1234 
- 2 - BCD - 5678 
- 3 - YES - 9101 
- 4 - ABC - 0246 

[tCC Master] 

- Number - Therapy - Location 
- 1 - BCD - 1234 
- 5 - QWE - 5678 
- 3 - YES - 9101 
- 6 - ABC - 0246 

这是我,但我不知道这件事

UPDATE [dbo].[ru_t_Customer Alignments] 

SET [dbo].[ru_t_Customer Alignments].[Customer Number] = [dbo].[ru_tCC_Master].[Customer Number] (@[dbo].[ru_t_Customer Alignments].[Customer Number], [dbo].[ru_t_Customer Alignments].[Customer Number]) 
    , [dbo].[ru_t_Customer Alignments].[Therapy] = [dbo].[ru_tCC_Master].[Therapy] (@[dbo].[ru_t_Customer Alignments].[Therapy], [dbo].[ru_t_Customer Alignments].[Therapy]) 

FROM [dbo].[ru_t_Customer Alignments], [dbo].[ru_tCC_Master] 

WHERE [dbo].[ru_t_Customer Alignments].[Customer Number] <> [dbo].[ru_tCC_Master].[Customer Number] OR [dbo].[ru_t_Customer Alignments].[Therapy] = [dbo].[ru_tCC_Master].[Therapy]; 

如果有人能帮我指点一个解决方案,那将是美好的。 谢谢!

+0

这里的关键是什么?位置? –

+0

[客户号码]应该PK在两个表上?你会如何加入两张桌子?为什么要在主表上更新[客户编号]? – EricZ

+0

我们一直在经历收购后的变化,这些变化正在激化。 位置应该是不会改变的,但是治疗和数量之间可能存在相关性。还有其他的领域,如位置名称,地区等......这些都将保持相对静态。 –

回答

0

首先你应该绑定两个表。然后在数据不同的情况下更新这些列。 我认为这些表中的位置信息更新不同,它们对所有客户都是唯一的。

我也给了表的简短别名,以便于理解。

UPDATE CA 

SET  CA.[Customer Number] = CM.[Customer Number], 
     CA.[Therapy] = CM.[Therapy] 

FROM [dbo].[ru_t_Customer Alignments] CA 
     INNER JOIN [dbo].[ru_tCC_Master] CM ON CA.[Location Number] = CM.[Location] 

WHERE CA.[Customer Number] <> CM.[Customer Number] 
     OR CA.[Therapy] <> CM.[Therapy] ; 
+0

这工作!谢谢 –

相关问题