当前位置: 代码迷 >> Sql Server >> 关于数据更新的有关问题
  详细解决方案

关于数据更新的有关问题

热度:39   发布时间:2016-04-27 17:45:26.0
关于数据更新的问题
我有两个表   custKinds     CustKindDetail  
表   custKinds
      ckKindCode       ckKindName     ckWaterPrice     ckWRRatio  
            001                 生活用水           1.17                     100
            002                 商业用水           1.23                     100
表   CustKindDetail  
      cdMeterID       cdKindCode     cdWaterPrice       cdWRRatio
          100                   001                       1.17                     70
          100                   002                       1.23                     30
          101                   001                       1.17                     100
          102                   002                       1.23                     100
          103                   001                       1.17                     20
          103                   002                       1.23                     80
我想要的结果是   当表custKinds   的字段ckWRRatio(用水收费比例)   更新时
把表CustKindDetail中拥有一种用水性质的cdWRRatio字段同时更新(比如:   编号为   101   102),而有两种用水性质的cdWRRatio字段不更新(比如:编号   100   103   )  

要求用一条更新语句(只要求更新CustKindDetail   表的就行)   在这条语句中不用   not   in或者in  
谢谢你的指教!


------解决方案--------------------
create table custKinds(ckKindCode varchar(10),ckKindName varchar(20),ckWaterPrice numeric(18,2),ckWRRatio int)
insert into custKinds
select '001 ', '生活用水 ',1.17,100
union all select '002 ', '商业用水 ',1.23,100
create table CustKindDetail(cdMeterID varchar(10),cdKindCode varchar(10),cdWaterPrice numeric(18,2),cdWRRatio int)
insert into CustKindDetail
select '100 ', '001 ',1.17,70
union all select '100 ', '002 ',1.23,30
union all select '101 ', '001 ',1.17,100
union all select '102 ', '002 ',1.23,100
union all select '103 ', '001 ',1.17,20
union all select '103 ', '002 ',1.23,80

update CustKindDetail
set cdWRRatio=b.ckWRRatio
from CustKindDetail a,custKinds b
where not exists(select 1 from CustKindDetail b where a.cdMeterID=b.cdMeterID and a.cdKindCode <> b.cdKindCode)
  相关解决方案