Sql 如何替换Oracle表中匹配记录的列值

Sql 如何替换Oracle表中匹配记录的列值,sql,oracle,Sql,Oracle,我有一个表,其中包含一些匹配的员工值,即一名员工可能在多个部门。 我想根据这些记录的“名称”和“dob”来识别它们。如果相同,则将“id”替换为小数点的增量。 在下面的例子中:Mike在两个部门(IT、财务),所以我希望他的IT部门id(作为小数点的增量)出现在最终结果中。基本id可以根据其所在部门进行标识 请告诉我怎么做 我们取最小id和行号除以10: SELECT MIN(id) OVER(PARTITION BY name, dob) + ((ROW_NUMBER() OVER(PAR

我有一个表,其中包含一些匹配的员工值,即一名员工可能在多个部门。 我想根据这些记录的“名称”和“dob”来识别它们。如果相同,则将“id”替换为小数点的增量。 在下面的例子中:Mike在两个部门(IT、财务),所以我希望他的IT部门id(作为小数点的增量)出现在最终结果中。基本id可以根据其所在部门进行标识

请告诉我怎么做


我们取最小id和行号除以10:

SELECT
  MIN(id) OVER(PARTITION BY name, dob) + ((ROW_NUMBER() OVER(PARTITION BY name, dob ORDER BY id)-1)/10 as id,
  name,
  dob,
  department
FROM
  emp
< P>我选择了雇员的MID ID作为基本ID。如果你有不同的策略,就像你想要它的DeT ID来形成基本值,而不是Min(ID),考虑一些类似于“代码>第一个值(ID)”(按顺序按…=‘0’,否则1个结束’,按……/代码>< /P>分区…按顺序排列。
我同意蒂姆的观点;你的问题中似乎有很多是不清楚的,没有明确说明或者没有完全考虑清楚。如果环境管理计划在10个部门中,并且发生id冲突,该怎么办?一般来说,我们不关心身份证号码是什么,所以我们不会更改它或试图填补空白等

我们如何知道
12
john
的基本
id
值,而不是
89
?一般来说,这可能不清楚或不可能。基于部门(IT)基于部门(IT)?这是什么意思?如果
ken
在财务和人力资源部门,因此没有一行在该部门,该怎么办?蒂姆的问题很有道理;你的答案没有。请注意,这个问题与编程无关-它是关于业务问题本身(在这个阶段与计算机或数据库无关)。我只想替换it部门员工的id“替换为十进制增量的id”。这是什么意思?谢谢Caius,我可以通过在表本身上使用自连接来实现这一点吗?