我有一个设置了列的表:从非规范化表中选择最近的记录
- FNAME
- LNAME
- 地址
- 城市
- 状态
- 拉链
- 客户ID
- date_modifi ED
的数据基本上非规范化所以看起来像
Ben -- Smith--***123first*** st -- NY -- NY -- 12101 -- 123 -- 1-1-2011 Ben -- Smith--***123 1st st*** -- NY -- NY -- 12101 -- 123 -- 1-1-2011 Sara -- Smith -- BLAH BLAH BLAh
我想这些记录复制到新表,但我只希望每个客户ID的一个记录。
我试着做一些像
insert into new_table(fname,lname,address,city,state,zip,Customer_ID,
date_modified)
select fname,lname,address,city,state,zip,Customer_ID,date_modified
group by (fname,lname,address,city,state,zip,Customer_ID,date_modified)
的问题是存在具有相同的含义,但不同的文字(第一VS 1)太多地址等栏目。所以该组通过将这两个记录留在新表中。我如何通过选择max(修改日期)来为每个客户ID获取一条记录。基本上我想通过customer_id而不是其他列进行分组,但这在oracle中是不允许的。
请注意'group by'不是函数。括号完全没用。 –
通过更改数据库设计可以更好地满足您的需求,但这个问题存在一些问题。根据需要:1)将地址拆分到自己的表中,然后在地址和客户之间创建一个交叉引用表。 2)将名称分割到自己的表中,然后将名称和客户之间的交叉引用表与“part_of_name”(即 - family,given,nick等)列相关联。 –