需要sql查询通过比较oracle表多行中的两个字段来分配唯一id

需要sql查询通过比较oracle表多行中的两个字段来分配唯一id,sql,oracle,Sql,Oracle,我在Oracle表中有以下数据。 我们正在比较每一行,看它们是相同的还是不同的。 如果记录相同,我们想添加显示UID的第三个新列 SeqID RefID 12 CO1000348570 14 16071739 14 9594910 13 CO1000348570 12 16071739 11 9594910 15 888745 期望输出 SeqID RefID UID 12 CO1000348570 U1 14 1

我在Oracle表中有以下数据。 我们正在比较每一行,看它们是相同的还是不同的。 如果记录相同,我们想添加显示UID的第三个新列

SeqID   RefID
12    CO1000348570
14    16071739
14    9594910
13    CO1000348570
12    16071739
11    9594910
15    888745
期望输出

SeqID   RefID        UID
12    CO1000348570   U1
14    16071739       U1
14    9594910        U1
13    CO1000348570   U1
12    16071739       U1
11    9594910        U1
15    888745         U2
有人能给我提供sql查询或过程来获得结果吗

编辑


我希望输出如下(前两列是输入)

试试这个:

SELECT t.*,
  CASE
    WHEN COUNT(*) over (partition BY seqID) > 1
    OR   COUNT(*) over (partition BY refID) > 1
    THEN 'U1'
    ELSE 'U2'
  END UID
FROM your_table t;

如果同一个refID分配给多个seqID或同一个seqID分配给多个refID,它将分配组U1。

前6行是如何获得值U1和最后一个U2的?不太清楚是不是因为refID列在前6行中有重复项?是的,refID和Seq都有重复项,但它们在行之间交叉。我的意思是SeqID 12有CO1000348570和16071739。如果你查找16071739,它也有SeqID 14。然后,SeqID 14得到了9594910,最后9594910得到了SeqID 11,所以基本上前6行表示相同的数据,应该得到U1作为唯一ID,而最后一行没有任何连接,所以必须在那里分配U2,依此类推。您使用的是哪种DBMS?我希望输出如下(前两列是输入)SeqID RefID UID Email_18 CO1017537260 U1 Email_19 CO1008886658 U2 Email_19 23654191 U2 Email_19 293063 U2 Email_20 CO1010562711 U2 Email_20 CO1015849928 U2 Email_21 12780751 U3电话_19 co101768585850 U1电话_19 CO1017537260 U1电话_20 CO1008886658 U2电话_20 23654191 U2电话_22 CO1010562711 U2电话_22 293 U2电话U2电话ゅPSeqID | RefID
------ByEmail | ByPhone | u12 | 15167016
------ByEmail | RefID | 34435216
------ByPhone | CO1021221042 |
------我想添加第四列,该列应显示NewID,让我们说U1,因为上面三行的ID相同RefID或相同的SeqID。有人能为我提供这个sql查询吗?
SELECT t.*,
  CASE
    WHEN COUNT(*) over (partition BY seqID) > 1
    OR   COUNT(*) over (partition BY refID) > 1
    THEN 'U1'
    ELSE 'U2'
  END UID
FROM your_table t;