0
update IQAlarm
set IQAD=GETDATE(),AD=AD+1
where exists (select CPC from Inquiry where Inquiry.IQST='ooo' 
  and DATEDIFF(DAY,GETDATE(),Inquiry.QDL)<=3 and Inquiry.CPC = IQAlarm.CPC);

insert into IQAlarm (CPC)  
select CPC from Inquiry   
where not exists (select CPC from Inquiry where Inquiry.IQST='ooo' 
and DATEDIFF(DAY,GETDATE(),Inquiry.QDL)<=3 and Inquiry.CPC = **IQAlarm.CPC**);

更新は正常に機能しますが、挿入すると次のエラーが発生します。

マルチパート識別子「IQAlarm.CPC」をバインドできませんでした。

4

1 に答える 1

1

最初の更新には、FROM相関をサポートするための句が必要です (ただし、それがなくても機能することにショックはありません。それは、私が書きたい方法ではありません)。

UPDATE IQAlarm
set IQAD=GETDATE(),AD=AD+1
FROM IQAlarm -- <----- you need this
where exists (select CPC from Inquiry 
  where Inquiry.IQST='ooo' and DATEDIFF(DAY,GETDATE(),Inquiry.QDL)<=3 
  and Inquiry.CPC = IQAlarm.CPC);

そして、あなたの2番目はすべてめちゃくちゃだと思います。おそらくこれはあなたが意図したものです:

insert into IQAlarm (CPC)
  select CPC from Inquiry
  where IQST='ooo' 
   and DATEDIFF(DAY,GETDATE(),Inquiry.QDL)<=3 
  and not exists (SELECT 1 FROM IQAlarm WHERE CPC = Inquiry.CPC);
于 2013-08-14T18:11:11.203 に答える