问题描述
嗨,
我要求在包含不同产品的历史价格信息的表上写一个视图。
产品的第一历史记录 (按日期顺序排序时) 应将GRANT_DATE作为有效日期,随后的历史记录应将有效日期作为先前记录的终止日期。当在产品id上加入时,第一条记录的GRANT_DATE来自另一个表
例如:
产品价格终止日期
1 10 9/3/17
1 11 24/3/17
1 12 30/3/17
所以我的观点应该产生
产品标识有效日期价格
1 4/3/17 10
1 9/3/17 11
1 24/3/17 12
有人可以帮助我如何实现此逻辑。
请找到下面的测试用例:
创建表historic_price (产品编号 (10),价格编号 (5),终止日期日期)
插入hisotric_price值 (1,10,9-3-17);
插入hisotric_price值 (1,11,24-3-17);
插入hisotric_price值 (1,12,30-3-17);
创建表product_info (product_id号 (10),授权日期日期)
插入产品信息 (1,4-3-17);
而且,如果在同一天historic_price表中有多个产品条目,我们需要考虑max(cessation_date) 来获取当天的最后一个条目。
如果需要任何进一步的信息,请告诉我。
干杯
西里沙
我要求在包含不同产品的历史价格信息的表上写一个视图。
产品的第一历史记录 (按日期顺序排序时) 应将GRANT_DATE作为有效日期,随后的历史记录应将有效日期作为先前记录的终止日期。当在产品id上加入时,第一条记录的GRANT_DATE来自另一个表
例如:
产品价格终止日期
1 10 9/3/17
1 11 24/3/17
1 12 30/3/17
所以我的观点应该产生
产品标识有效日期价格
1 4/3/17 10
1 9/3/17 11
1 24/3/17 12
有人可以帮助我如何实现此逻辑。
请找到下面的测试用例:
创建表historic_price (产品编号 (10),价格编号 (5),终止日期日期)
插入hisotric_price值 (1,10,9-3-17);
插入hisotric_price值 (1,11,24-3-17);
插入hisotric_price值 (1,12,30-3-17);
创建表product_info (product_id号 (10),授权日期日期)
插入产品信息 (1,4-3-17);
而且,如果在同一天historic_price表中有多个产品条目,我们需要考虑max(cessation_date) 来获取当天的最后一个条目。
如果需要任何进一步的信息,请告诉我。
干杯
西里沙
专家解答
你是知道的...您也许应该考虑发布一个测试用例,该用例甚至有一定的工作机会。一些建议你付出一点努力的东西。这表明你有既得利益与我们一起努力解决问题 ....
因为就目前而言... 它的意思是 “您只花了10秒钟,但您希望我们花10分钟或更长时间”。叹息
SQL> create table historic_price (product_id number(10),price number(5),cessation_date date); Table created. SQL> insert into hisotric_price values(1,10,9-3-17); insert into hisotric_price values(1,10,9-3-17) * ERROR at line 1: ORA-00942: table or view does not exist SQL> insert into hisotric_price values(1,11,24-3-17); insert into hisotric_price values(1,11,24-3-17) * ERROR at line 1: ORA-00942: table or view does not exist SQL> insert into hisotric_price values(1,12,30-3-17); insert into hisotric_price values(1,12,30-3-17) * ERROR at line 1: ORA-00942: table or view does not exist SQL> create table product_info (product_id number(10),grant_date date) 2 insert into product_info (1,4-3-17); insert into product_info (1,4-3-17) * ERROR at line 2: ORA-00922: missing or invalid option复制
因为就目前而言... 它的意思是 “您只花了10秒钟,但您希望我们花10分钟或更长时间”。叹息
SQL> create table historic_price (product_id number(10),price number(5),cessation_date date); Table created. SQL> insert into historic_price values(1,10,date '2017-03-09'); 1 row created. SQL> insert into historic_price values(1,11,date '2017-03-24'); 1 row created. SQL> insert into historic_price values(1,12,date '2017-03-30'); 1 row created. SQL> create table product_info (product_id number(10),grant_date date); Table created. SQL> insert into product_info values (1,date '2017-03-04'); 1 row created. SQL> SQL> with all_records as 2 ( select product_id, price, cessation_date d from historic_price 3 union all 4 select product_id, null, grant_date d from product_info ) 5 select 6 product_id, d, lead(price) over ( partition by product_id order by d ) 7 from all_records 8 order by 1,2; PRODUCT_ID D LEAD(PRICE)OVER(PARTITIONBYPRODUCT_IDORDERBYD) ---------- --------- ---------------------------------------------- 1 04-MAR-17 10 1 09-MAR-17 11 1 24-MAR-17 12 1 30-MAR-17 4 rows selected.复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
597次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
576次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
491次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
474次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
459次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
436次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
434次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
420次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
368次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
358次阅读
2025-04-15 14:48:05