Create table person (
LastName varchar(255),
FirstName varchar(255),
seq_num int
)
Create table address (
Address varchar(255),
City varchar(255),
seq_num int
)
我需要生成一个csv文件,其中一个字段叫做unique_id,结合了4个字段。
查看查询。
select
GENERATE_ID(LastName, FirstName, Address, City) AS unique_id,
LastName,
FirstName,
Address,
City
from
person,
address
where
person.seq_num = address.seq_num
如何制作GENERATE_ID或任何等效方法?
答案 0 :(得分:0)
这个怎么样:
select
ROW_NUMBER() OVER (PARTITION BY LastName, FirstName, Address, City ORDER BY LastName, FirstName) AS unique_id,
LastName,
FirstName,
Address,
City
from person
join address on person.seq_num = address.seq_num
但是请注意,如果您有多个具有相同名称和地址/城市的人,则该号码不再是唯一的。
否则,只需使用ROWNUM
答案 1 :(得分:0)
使用ORA_HASH怎么样?
select
ora_hash(LastName || FirstName || Address || City) AS unique_id,
LastName,
FirstName,
Address,
City
from
person,
address
where
person.seq_num = address.seq_num;
这样,ID对于后续导出保持不变。
答案 2 :(得分:0)
最终表格中有四列(结果),如果基于这四列的记录是唯一的,我认为生成密钥的简单方法就是将它们连接在一起。
select
LastName||FirstName||Address||City AS unique_id,
LastName,
FirstName,
Address,
City
from
person,
address
where
person.seq_num = address.seq_num