0
set row pro1 pro2  Dup
1   1   AB2  AB2
1   1   AB6  AB4
1   1   AB2  NB3
2   1   AN2  QW3  
2   2   BH1  BH1
3   1   AJ1  AJ1
4   1   HU3  HU3
4   1   BH2  BH2

dup = 'Case1'与えられたセットのどこにデータを入力したいのか、 pro1 = pro2; そのセットに複数のレコードが存在する必要があります。期待される結果:

set row pro1 pro2  Dup
1   1   AB2  AB2   CASE1
1   1   AB6  AB4   NULL
1   1   AB2  NB3   NULL
2   1   AN2  QW3   NULL
2   2   BH1  BH1   CASE1 
3   1   AJ1  AJ1   NULL   (even though it matches, but its just one record)
4   1   HU3  HU3   CASE1
4   1   BH2  BH2   CASE1
4

1 に答える 1

1
with C as
(
  select pro1,
         pro2,
         dup,
         count(*) over(partition by [set]) as setcount
  from YourTable
)
update C
set dup = 'CASE!'
where pro1 = pro2 and
      setcount > 1

SE-Dataの作業サンプル

于 2012-04-17T05:40:12.463 に答える