创建返回具有复杂 SQL 的表的 Oracle 视图或过程,是不是可能以及如何?
Posted
技术标签:
【中文标题】创建返回具有复杂 SQL 的表的 Oracle 视图或过程,是不是可能以及如何?【英文标题】:Creating Oracle View or Procedure that returns a table with complex SQL, is it possible and how?创建返回具有复杂 SQL 的表的 Oracle 视图或过程,是否可能以及如何? 【发布时间】:2018-03-14 12:04:38 【问题描述】:我已经研究了几种方法来尝试完成我想要的,但我不确定从哪里开始,或者什么是获得我需要的最佳方法。我玩过几种不同的技术,但不确定我能否完成我需要的...
更改表格
CHG_NUM | CHG_APP | CHG_DATE
CHG1234 | ABC | 01-MAR-2018
CHG1235 | ABC | 01-MAR-2018
CHG1236 | DEF | 03-MAR-2018
事故表
INC_NUM | INC_APP | INC_DATE | INC_SEV
INC5678 | ABC | 02-MAR-2018 | HIGH
INC5679 | ABC | 03-MAR-2018 | HIGH
INC5680 | DEF | 03-MAR-2018 | HIGH
我希望能够遍历过去 x 天内的所有更改,并显示在更改后 y 天内使用同一应用程序开始的所有事件,并获得如下所示的结果
结果
CHG_NUM | CHG_APP | CHG_DATE | INC_NUM | INC_APP | INC_DATE | INC_SEV
CHG1234 | ABC | 01-MAR-2018 | INC5678 | ABC | 02-MAR-2018 | HIGH
CHG1234 | ABC | 01-MAR-2018 | INC5679 | ABC | 02-MAR-2018 | HIGH
CHG1235 | ABC | 01-MAR-2018 | INC5678 | ABC | 02-MAR-2018 | HIGH
CHG1235 | ABC | 01-MAR-2018 | INC5679 | ABC | 02-MAR-2018 | HIGH
CHG1236 | DEF | 03-MAR-2018 | INC5680 | DEF | 03-MAR-2018 | HIGH
【问题讨论】:
无法理解I want to be able to loop through all the of the changes within the last x days and show all incidents that started within y days
行。你能在哪里循环?为什么一个查询的天数是 X 天,而另一个查询的天数是 Y 天。如果您可以展示您尝试过的内容以及您的尝试无效的内容,那将很有帮助
这些都不需要任何复杂的 SQL。请发布您尝试过的内容。包括代表您尝试过的表格、数据和plsql
源的设置。目前的问题是要求有人为您编写代码。
【参考方案1】:
我不确定我是否真的理解了您的问题,因为我无法将主题与实际内容联系起来。仍在查看您的数据集,您可以尝试以下查询。解决方案非常简单。
SELECT CHG_NUM , CHG_APP , CHG_DATE , INC_NUM , INC_APP , INC_DATE , INC_SEV
FROM CHANGE C, INCIDENT I
WHERE C.CHG_DATE > SYSDATE - X -- x days put any number
AND C.CHG_APP = I.INC_APP
AND I.INC_DATE BETWEEN C.CHG_DATE AND C.CHG_DATE + Y -- Y days put any number
希望我正确理解了您的问题。
【讨论】:
不相关但建议,切换到ANSI
加入技术而不是旧的sql加入技术。
感谢 Vidya,您发送的正是我所需要的……非常感谢!以上是关于创建返回具有复杂 SQL 的表的 Oracle 视图或过程,是不是可能以及如何?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle如何查询一个用户所创建的表 以及 如何查询一张表的主人