昨天項目主管對我說需要對現行某個表的數據進行維護﹐原因是以前并沒有限制激活的唯一性。而如今需要﹐但先前的數據也不能刪除﹐沒有辦法﹐只有交給我們去幫用戶維護了。
好﹐不多說﹐先將表結構的腳本貼出﹕
 1
以下是從表
 1

實際上我們需要的是將主表的ACTIVE字段變為唯一的True,當然是在同一MAT_RATE_NO下。

解決的代碼如下﹕

 1sql數據維護
 2sql數據維護
 3sql數據維護--保留
 4sql數據維護Select   MAT_RATE_NO,PROD_NO,Max(UPDATE_DATE)  As UPDATE_DATE  Into #AA    From SP_MAT_RATE_MST B  Where  -- A.MAT_RATE_NO=B.MAT_RATE_NO and A.PROD_NO=B.PROD_NO and 
 5sql數據維護
 6sql數據維護 B.ACTIVE=1 Group By B. MAT_RATE_NO,B.PROD_NO  Having Count(*)>1
 7sql數據維護
 8sql數據維護
 9sql數據維護--更新
10sql數據維護Update A Set ACTIVE =0 
11sql數據維護
12sql數據維護  From SP_MAT_RATE_MST A where   Not   Exists(Select * From #AA B  Where   A.MAT_RATE_NO=B.MAT_RATE_NO And A.PROD_NO=B.PROD_NO And A.UPDATE_DATE=B.UPDATE_DATE) And
13sql數據維護
14sql數據維護 Exists(Select   MAT_RATE_NO,PROD_NO   From SP_MAT_RATE_MST C   Where  A.MAT_RATE_NO=C.MAT_RATE_NO And A.PROD_NO=C.PROD_NO And 
15sql數據維護 
16sql數據維護C.ACTIVE=1 Group By C. MAT_RATE_NO,C.PROD_NO  Having Count(*)>1
17sql數據維護
18sql數據維護 )
19sql數據維護
20sql數據維護Drop Table #AA

可能會有更好的解決方案﹐請不吝賜教﹗

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-04
  • 2021-10-27
  • 2022-12-23
  • 2021-07-02
  • 2022-01-20
  • 2021-12-07
猜你喜欢
  • 2022-12-23
  • 2022-02-07
  • 2022-12-23
  • 2021-07-07
  • 2022-12-23
  • 2021-12-22
  • 2022-03-08
相关资源
相似解决方案