需要更新才能将同一个表中的数据从1行复制到另一行

时间:2014-06-24 15:27:11

标签: sql sql-update inner-join

我有2个表我正在使用内部联接来使用相关数据。

 SELECT Provider_Administration.OCODE
      , Provider_Administration.PIDNumber
      , Provider_Administration.PID
      , Provider_Location.ID
      , Provider_Location.ID
      , Provider_Location.A1
      , Provider_Location.PArea
      , Provider_Location.PEx
      , Provider_Location.P4
 FROM Provider_Administration 
INNER
 JOIN Provider_Location 
   ON Provider_Administration.PID=Provider_Location.PID
WHERE Provider_Location.IsInactiveFLAG<>'Y' 
  AND PIDNumber = '00127' 

以下是结果..

ROW  OCODE       PIDNumber  PID     ID    PID_1   A1           PArea  Pex  P4
---  ----------  ---------  ------  ----  ------  -----------  -----  ---  ----
1    Enterprise  00127      3       6     37      2405 W MISS  555    555  1061
2    DIA         00127      706180  6800  706180  NA FOUND     0      0    0
3    MMM         00127      706181  6801  706181  NA FOUND     0      0    0
4    AWI         00127      706182  6802  706182  NA FOUND     0      0    0
5    WC          00127      706183  6803  706183  NA FOUND     0      0    0

我需要的是根据'Enterprise'的OCODE从ROW 1复制A1,PArea,Pex,P4,并且更新所有与PIDNumber匹配的行。正如您所看到的,这些值都在Provider_Location表中,所以我只是在单个表中更新信息,但为了找到匹配的critirea,我必须做一个innerjoin来从Provider_Administration表中获取PIDNumber。

一旦我使UPDATE脚本工作,我想知道如何在PArea中搜索0,然后使用相同的脚本获取PIDNumber并运行UPDATE,除非它会在WHERE语句中动态插入PIDNumber ?

这是UPDATE的理想结果。

ROW  OCODE       PIDNumber  PID     ID    PID_1   A1           PArea  Pex  P4
---  ----------  ---------  ------  ----  ------  -----------  -----  ---  ----
1    Enterprise  00127      3       6     37      2405 W MISS  555    555  1061
2    DIA         00127      706180  6800  706180  2405 W MISS  555    555  1061
3    MMM         00127      706181  6801  706181  2405 W MISS  555    555  1061
4    AWI         00127      706182  6802  706182  2405 W MISS  555    555  1061
5    WC          00127      706183  6803  706183  2405 W MISS  555    555  1061
6    Enterprise  00128      706184  6804  706184  1123 N PALM  555    444  3232
7    DIA         00128      706185  6805  706185  1123 N PALM  555    444  3232
8    MMM         00128      706186  6806  706186  1123 N PALM  555    444  3232
9    AWI         00128      706187  6807  706187  1123 N PALM  555    444  3232
10   WC          00128      706188  6808  706188  1123 N PALM  555    444  3232

好的,我能够创建UPDATE SCRIPT ......这是真正的脚本。现在我想找出如何替换ProviderIDNumber的增量数,以便创建一个基于2个变量启动和停止的循环。我根据ProviderIDNumber = x设置开始和停止,然后在所有更新语句x = x + 1的末尾然后返回到开始位置,现在而不是ProviderIDNumber = 23,它是24。

UPDATE Provider_Location
     SET Provider_Location.FaxPhoneLast4 = 
     (SELECT TOP 1 Provider_Location.FaxPhoneLast4
      FROM Provider_Location
      INNER JOIN Provider_Administration  
      ON Provider_Administration.ProviderID=Provider_Location.ProviderID
 WHERE ProviderIDNumber = '00127' 
      AND Provider_Administration.OrganizationCODE = 'Enterprise'
 ORDER BY Provider_Administration.OrganizationCODE ASC)
 FROM Provider_Location
      INNER JOIN Provider_Administration
      ON Provider_Administration.ProviderID=Provider_Location.ProviderID
 WHERE Provider_Administration.ProviderIDNumber = '00127'

0 个答案:

没有答案