【发布时间】:2014-05-22 09:59:01
【问题描述】:
我有一个包含以下列的表格
person_id Person_Name Telephone_No City Email_Id Insert_TS
还有某些其他列,例如 Alternate_name 等。 在此表中,只要在任何特定行中有任何更新,就会插入一行。例如
P01 Radhe 0112311231 Bia b@b.com 09-NOV-2012 15:24:38
P01 Radhe Null Bia a@b.com 30-APR-2014 21:26:51
P02 Shayam 456897845 Albi s@b.com 30-APR-2014 14:36:03
P03 Radha Null xyz s1@b.com 31-APR-2014 14:36:03
意味着,电话字段中很少有记录包含空值,但所有其他字段都有数据
我想显示 person_id Person_Name Telephone_No City Email_Id 列,这样如果有任何行包含与一个 person_id 相对应的 phone_no 值非空值,那么应该显示最新记录 别的 应显示此人的最新记录
总结显示唯一的person_id和最新的telephone_no对于那些没有telephone_no最新记录的人应该显示。
我试过这样:
用最新的telephone_no 获取唯一的person_id -- A 获取所有具有最新记录的唯一 person_id --- B
将数据显示为 (B-A) + A 。
但这需要太多时间,而且似乎效率不高。 请建议一个查询以更快地获取记录
其他可能的方法是按结果分组使用 case 语句,例如按 Person_id 对值进行分组,如果每个组中有任何电话号码,则显示具有最新值的那个,否则显示组中的最新条目
【问题讨论】:
标签: sql oracle join group-by case