好﹐不多說﹐先將表結構的腳本貼出﹕
1
以下是從表
1
實際上我們需要的是將主表的ACTIVE字段變為唯一的True,當然是在同一MAT_RATE_NO下。
解決的代碼如下﹕
1
2
3
--保留
4
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
5
6
B.ACTIVE=1 Group By B. MAT_RATE_NO,B.PROD_NO Having Count(*)>1
7
8
9
--更新
10
Update A Set ACTIVE =0
11
12
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
13
14
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
15
16
C.ACTIVE=1 Group By C. MAT_RATE_NO,C.PROD_NO Having Count(*)>1
17
18
)
19
20
Drop Table #AA
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
可能會有更好的解決方案﹐請不吝賜教﹗