创建返回具有复杂 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怎样建立一个一模一样的表,急~在线等

Oracle中查看最近被修改过的表的方法

Oracle如何查询一个用户所创建的表 以及 如何查询一张表的主人

快速 SQL 问题:在 H2 中创建具有主键的表的正确语法?

查看Oracle都有哪些表或者视图

Pyspark 数据框:将 jdbc 写入具有给定模式的表的动态创建