仅包含当前记录的 Oracle 表;使用 max(date) 减少重复项
我需要在 Oracle 中创建一个新表,其中仅包含每条记录的最新日期(步骤 1),并计算之间的天数(步骤 2)。
非常感谢您的建议:)))
第 1 步:首先,我需要从表 USERS 中找到每条记录的最大值(Mod_date)。
表:用户
姓名................Mod_Date
Jason Martin....25-JUL-89
Al Mathews......... 21-MAR- 89
詹姆斯·史密斯........ 88年12月12日
罗伯特·布莱克....... 84年1月15日
贾森·马丁....... 99年7月25日
艾尔·马修斯.... ..... 96 年 3 月 21 日
詹姆斯·史密斯 ........ 98 年 12 月 12 日
罗伯特·布莱克 ...... 94 年 1 月 15 日
*TABLE_DESIRED_RESULTS_step1
名称 ........ ....... Max(Mod_Date)
Jason Martin....... 99 年 7 月 25 日
阿尔·马修斯......... 96 年 3 月 21 日
詹姆斯·史密斯...... .12-DEC-98
Robert Black.......15-JAN-94
步骤 2:计算“Regist_Date 和 Mod_Date 之间的天数”&将其添加到表中。
表:注册
名称................注册_日期
Jason Martin.........20-7-JUL-99
Al Mathews....... 96 年 3 月 23 日
罗伯特·布莱克.........94 年 1 月 20 日
*TABLE_DESIRED_RESULTS_step2
名称.........................最大(Mod_Date).....数量Regist_Date 和 Mod_Date 之间的天数
Jason Martin......99 年 7 月 25 日......5
Al Mathews......96 年 3 月 21 日...... ...-2
詹姆斯·史密斯......98 年 12 月 12 日......无效
罗伯特·布莱克......94 年 1 月 15 日...... ...-5
*请注意,这些数据是编造的,我已经有现有的联合和联接,我必须向其中添加此逻辑。谢谢,祝你有美好的一天!
I need to create a new table in oracle with only the most current date for each record (step 1), and calculate days between (step 2).
Your suggestions are greatly appreciated:)))
Step 1: First I need to find the max (Mod_date) for each record from table USERS.
TABLE: USERS
Name................Mod_Date
Jason Martin....... 25-JUL-89
Al Mathews......... 21-MAR-89
James Smith........ 12-DEC-88
Robert Black....... 15-JAN-84
Jason Martin....... 25-JUL-99
Al Mathews......... 21-MAR-96
James Smith........ 12-DEC-98
Robert Black....... 15-JAN-94
*TABLE_DESIRED_RESULTS_step1
Name............... Max(Mod_Date)
Jason Martin....... 25-JUL-99
Al Mathews......... 21-MAR-96
James Smith........12-DEC-98
Robert Black.......15-JAN-94
Step 2: Calculate “Number of Days Between Regist_Date and Mod_Date” & add it to the table.
TABLE: REGISTRATION
Name................Regist_Date
Jason Martin.........20-JUL-99
Al Mathews...........23-MAR-96
Robert Black.........20-JAN-94
*TABLE_DESIRED_RESULTS_step2
Name...............Max(Mod_Date).....Number of Days Between Regist_Date and Mod_Date
Jason Martin...... 25-JUL-99..........5
Al Mathews........ 21-MAR-96.........-2
James Smith....... 12-DEC-98..........null
Robert Black...... 15-JAN-94..........-5
*Please note, this data is made up and I already have existing unions and joins to which I have to add this logic. Thanks and have a nice day!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是我的更新答案和示例。
重要的是您的日期列具有
DATE
类型。这是符合您的规格的表格和数据。
第一步
第二步
这里的技巧是,如果连接不匹配,
LEFT OUTER JOIN
允许空值。但我有一个数据库设计问题。
如果您有 2 个同名用户,您将把 2 个用户合并为一个。
这里有一个使用 ID 并在 ID 上进行连接的解决方案。
;
第一步
第二步
here is my updated answer with a sample.
The important thing is that your date column have the
DATE
type.Here is the tables and data following your specification.
First step
second step
The trick here is that
LEFT OUTER JOIN
allows null value if there is no match with the join.But there is a database design concern for me.
If you have 2 users with the exact same name , you will merge 2 persons in one.
Here a solution using IDs and doing the join on the IDs.
;
First step
second step