创建返回具有复杂SQL的表的Oracle View或Procedure,是否可能以及如何实现?

时间:2018-03-14 12:04:38

标签: sql oracle plsql view

我已经研究了几种尝试完成我想要的方法,但我不知道从哪里开始或者什么是获得我需要的最佳方式。我玩过几种不同的技巧,但我不确定能否完成我需要的技术......

更改表

CHG_NUM | CHG_APP | CHG_DATE
CHG1234 | ABC | 01-MAR-2018
CHG1235 | ABC | 01-MAR-2018
CHG1236 | DEF | 03-MAR-2018

INCIDENT TABLE

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天内开始的所有事件,并获得看起来像这样的结果

RESULT

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

1 个答案:

答案 0 :(得分:0)

我不确定我是否真的理解你的问题,因为我无法将主题与实际内容联系起来。仍在查看您的数据集,您可以尝试以下查询。解决方案非常直接。

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

我希望我能正确理解你的问题。