Referancing value from select column in where clause : Oracle





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















My tables are as below



MS_ISM_ISSUE



ISSUE_ID  ISSUE_DUE_DATE  ISSUE_SOURCE_TYPE
I1 25-11-2018 1
I2 25-12-2018 1
I3 27-03-2019 2


MS_ISM_SOURCE_SETUP



SOURCE_ID MODULE_NAME
1 IT-Compliance
2 Risk Assessment


I have written following query.



with rs as
(select
count(ISSUE_ID) as ISSUE_COUNT, src.MODULE_NAME,
case
when ISSUE_DUE_DATE<sysdate then 'Overdue'
when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
end as date_range
from MS_ISM_ISSUE issue, MS_ISM_SOURCE_SETUP src
where issue.Issue_source_type = src.source_id
group by src.MODULE_NAME, case
when ISSUE_DUE_DATE<sysdate then 'Overdue'
when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
end)
select ISSUE_COUNT,MODULE_NAME, DATE_RANGE,
(select count(ISSUE_COUNT) from rs where rs.MODULE_NAME=MODULE_NAME) as total from rs;


The output of the code is as below.



ISSUE_COUNT  MODULE_NAME      DATE_RANGE     Total
1 IT-Compliance Overdue 3
1 IT-Compliance Within 3 months 3
1 Risk Assessment Beyond 90 days 3


The result is correct till 3rd column. In 4th column what I want is, total of Issue count for given module name. Hence in above case Total column will have value as 2 for first and second row (since there are 2 Issues for IT-Compliance) and value 1 for the third row (since one issue is present for Risk Assessment).



Essentially, I want to achieve is to replace current row's MODULE_NAME in last where clause. How do I achieve this using query?










share|improve this question































    0















    My tables are as below



    MS_ISM_ISSUE



    ISSUE_ID  ISSUE_DUE_DATE  ISSUE_SOURCE_TYPE
    I1 25-11-2018 1
    I2 25-12-2018 1
    I3 27-03-2019 2


    MS_ISM_SOURCE_SETUP



    SOURCE_ID MODULE_NAME
    1 IT-Compliance
    2 Risk Assessment


    I have written following query.



    with rs as
    (select
    count(ISSUE_ID) as ISSUE_COUNT, src.MODULE_NAME,
    case
    when ISSUE_DUE_DATE<sysdate then 'Overdue'
    when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
    when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
    end as date_range
    from MS_ISM_ISSUE issue, MS_ISM_SOURCE_SETUP src
    where issue.Issue_source_type = src.source_id
    group by src.MODULE_NAME, case
    when ISSUE_DUE_DATE<sysdate then 'Overdue'
    when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
    when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
    end)
    select ISSUE_COUNT,MODULE_NAME, DATE_RANGE,
    (select count(ISSUE_COUNT) from rs where rs.MODULE_NAME=MODULE_NAME) as total from rs;


    The output of the code is as below.



    ISSUE_COUNT  MODULE_NAME      DATE_RANGE     Total
    1 IT-Compliance Overdue 3
    1 IT-Compliance Within 3 months 3
    1 Risk Assessment Beyond 90 days 3


    The result is correct till 3rd column. In 4th column what I want is, total of Issue count for given module name. Hence in above case Total column will have value as 2 for first and second row (since there are 2 Issues for IT-Compliance) and value 1 for the third row (since one issue is present for Risk Assessment).



    Essentially, I want to achieve is to replace current row's MODULE_NAME in last where clause. How do I achieve this using query?










    share|improve this question



























      0












      0








      0








      My tables are as below



      MS_ISM_ISSUE



      ISSUE_ID  ISSUE_DUE_DATE  ISSUE_SOURCE_TYPE
      I1 25-11-2018 1
      I2 25-12-2018 1
      I3 27-03-2019 2


      MS_ISM_SOURCE_SETUP



      SOURCE_ID MODULE_NAME
      1 IT-Compliance
      2 Risk Assessment


      I have written following query.



      with rs as
      (select
      count(ISSUE_ID) as ISSUE_COUNT, src.MODULE_NAME,
      case
      when ISSUE_DUE_DATE<sysdate then 'Overdue'
      when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
      when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
      end as date_range
      from MS_ISM_ISSUE issue, MS_ISM_SOURCE_SETUP src
      where issue.Issue_source_type = src.source_id
      group by src.MODULE_NAME, case
      when ISSUE_DUE_DATE<sysdate then 'Overdue'
      when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
      when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
      end)
      select ISSUE_COUNT,MODULE_NAME, DATE_RANGE,
      (select count(ISSUE_COUNT) from rs where rs.MODULE_NAME=MODULE_NAME) as total from rs;


      The output of the code is as below.



      ISSUE_COUNT  MODULE_NAME      DATE_RANGE     Total
      1 IT-Compliance Overdue 3
      1 IT-Compliance Within 3 months 3
      1 Risk Assessment Beyond 90 days 3


      The result is correct till 3rd column. In 4th column what I want is, total of Issue count for given module name. Hence in above case Total column will have value as 2 for first and second row (since there are 2 Issues for IT-Compliance) and value 1 for the third row (since one issue is present for Risk Assessment).



      Essentially, I want to achieve is to replace current row's MODULE_NAME in last where clause. How do I achieve this using query?










      share|improve this question
















      My tables are as below



      MS_ISM_ISSUE



      ISSUE_ID  ISSUE_DUE_DATE  ISSUE_SOURCE_TYPE
      I1 25-11-2018 1
      I2 25-12-2018 1
      I3 27-03-2019 2


      MS_ISM_SOURCE_SETUP



      SOURCE_ID MODULE_NAME
      1 IT-Compliance
      2 Risk Assessment


      I have written following query.



      with rs as
      (select
      count(ISSUE_ID) as ISSUE_COUNT, src.MODULE_NAME,
      case
      when ISSUE_DUE_DATE<sysdate then 'Overdue'
      when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
      when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
      end as date_range
      from MS_ISM_ISSUE issue, MS_ISM_SOURCE_SETUP src
      where issue.Issue_source_type = src.source_id
      group by src.MODULE_NAME, case
      when ISSUE_DUE_DATE<sysdate then 'Overdue'
      when ISSUE_DUE_DATE between sysdate and sysdate + 90 then 'Within 3 months'
      when ISSUE_DUE_DATE>sysdate+90 then 'Beyond 90 days'
      end)
      select ISSUE_COUNT,MODULE_NAME, DATE_RANGE,
      (select count(ISSUE_COUNT) from rs where rs.MODULE_NAME=MODULE_NAME) as total from rs;


      The output of the code is as below.



      ISSUE_COUNT  MODULE_NAME      DATE_RANGE     Total
      1 IT-Compliance Overdue 3
      1 IT-Compliance Within 3 months 3
      1 Risk Assessment Beyond 90 days 3


      The result is correct till 3rd column. In 4th column what I want is, total of Issue count for given module name. Hence in above case Total column will have value as 2 for first and second row (since there are 2 Issues for IT-Compliance) and value 1 for the third row (since one issue is present for Risk Assessment).



      Essentially, I want to achieve is to replace current row's MODULE_NAME in last where clause. How do I achieve this using query?







      oracle plsql oracle11g






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 28 '18 at 8:43









      Barbaros Özhan

      14.8k71634




      14.8k71634










      asked Nov 26 '18 at 13:54









      Yogesh PitaleYogesh Pitale

      558




      558
























          1 Answer
          1






          active

          oldest

          votes


















          2














          OK, this condition



          where rs.MODULE_NAME=MODULE_NAME


          is essentially the same as if you wrote



          where MODULE_NAME = MODULE_NAME


          which is simply always true (if there are no nulls in module_name).



          Try using different table alias for inner query and outer query, e.g.



          select count(ISSUE_COUNT) from rs rs2 where rs2.MODULE_NAME=rs.MODULE_NAME


          You can also try to use analytic function here, something like



          select ISSUE_COUNT,
          MODULE_NAME,
          DATE_RANGE,
          COUNT(ISSUE_COUNT) OVER (PARTITION BY RS.MODULE_NAME) AS TOTAL
          from rs


          instead of your subquery






          share|improve this answer


























          • Thanks Marcin for the help.Both of your methods work! Even I wanted to create two aliases for select statement within the with clause but couldn't think of any way of doing it. Its silly of me that I could not think of doing that in sub query :)

            – Yogesh Pitale
            Nov 26 '18 at 15:00














          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53482641%2freferancing-value-from-select-column-in-where-clause-oracle%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          OK, this condition



          where rs.MODULE_NAME=MODULE_NAME


          is essentially the same as if you wrote



          where MODULE_NAME = MODULE_NAME


          which is simply always true (if there are no nulls in module_name).



          Try using different table alias for inner query and outer query, e.g.



          select count(ISSUE_COUNT) from rs rs2 where rs2.MODULE_NAME=rs.MODULE_NAME


          You can also try to use analytic function here, something like



          select ISSUE_COUNT,
          MODULE_NAME,
          DATE_RANGE,
          COUNT(ISSUE_COUNT) OVER (PARTITION BY RS.MODULE_NAME) AS TOTAL
          from rs


          instead of your subquery






          share|improve this answer


























          • Thanks Marcin for the help.Both of your methods work! Even I wanted to create two aliases for select statement within the with clause but couldn't think of any way of doing it. Its silly of me that I could not think of doing that in sub query :)

            – Yogesh Pitale
            Nov 26 '18 at 15:00


















          2














          OK, this condition



          where rs.MODULE_NAME=MODULE_NAME


          is essentially the same as if you wrote



          where MODULE_NAME = MODULE_NAME


          which is simply always true (if there are no nulls in module_name).



          Try using different table alias for inner query and outer query, e.g.



          select count(ISSUE_COUNT) from rs rs2 where rs2.MODULE_NAME=rs.MODULE_NAME


          You can also try to use analytic function here, something like



          select ISSUE_COUNT,
          MODULE_NAME,
          DATE_RANGE,
          COUNT(ISSUE_COUNT) OVER (PARTITION BY RS.MODULE_NAME) AS TOTAL
          from rs


          instead of your subquery






          share|improve this answer


























          • Thanks Marcin for the help.Both of your methods work! Even I wanted to create two aliases for select statement within the with clause but couldn't think of any way of doing it. Its silly of me that I could not think of doing that in sub query :)

            – Yogesh Pitale
            Nov 26 '18 at 15:00
















          2












          2








          2







          OK, this condition



          where rs.MODULE_NAME=MODULE_NAME


          is essentially the same as if you wrote



          where MODULE_NAME = MODULE_NAME


          which is simply always true (if there are no nulls in module_name).



          Try using different table alias for inner query and outer query, e.g.



          select count(ISSUE_COUNT) from rs rs2 where rs2.MODULE_NAME=rs.MODULE_NAME


          You can also try to use analytic function here, something like



          select ISSUE_COUNT,
          MODULE_NAME,
          DATE_RANGE,
          COUNT(ISSUE_COUNT) OVER (PARTITION BY RS.MODULE_NAME) AS TOTAL
          from rs


          instead of your subquery






          share|improve this answer















          OK, this condition



          where rs.MODULE_NAME=MODULE_NAME


          is essentially the same as if you wrote



          where MODULE_NAME = MODULE_NAME


          which is simply always true (if there are no nulls in module_name).



          Try using different table alias for inner query and outer query, e.g.



          select count(ISSUE_COUNT) from rs rs2 where rs2.MODULE_NAME=rs.MODULE_NAME


          You can also try to use analytic function here, something like



          select ISSUE_COUNT,
          MODULE_NAME,
          DATE_RANGE,
          COUNT(ISSUE_COUNT) OVER (PARTITION BY RS.MODULE_NAME) AS TOTAL
          from rs


          instead of your subquery







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 26 '18 at 14:26

























          answered Nov 26 '18 at 14:19









          Marcin WroblewskiMarcin Wroblewski

          3,0611422




          3,0611422













          • Thanks Marcin for the help.Both of your methods work! Even I wanted to create two aliases for select statement within the with clause but couldn't think of any way of doing it. Its silly of me that I could not think of doing that in sub query :)

            – Yogesh Pitale
            Nov 26 '18 at 15:00





















          • Thanks Marcin for the help.Both of your methods work! Even I wanted to create two aliases for select statement within the with clause but couldn't think of any way of doing it. Its silly of me that I could not think of doing that in sub query :)

            – Yogesh Pitale
            Nov 26 '18 at 15:00



















          Thanks Marcin for the help.Both of your methods work! Even I wanted to create two aliases for select statement within the with clause but couldn't think of any way of doing it. Its silly of me that I could not think of doing that in sub query :)

          – Yogesh Pitale
          Nov 26 '18 at 15:00







          Thanks Marcin for the help.Both of your methods work! Even I wanted to create two aliases for select statement within the with clause but couldn't think of any way of doing it. Its silly of me that I could not think of doing that in sub query :)

          – Yogesh Pitale
          Nov 26 '18 at 15:00






















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53482641%2freferancing-value-from-select-column-in-where-clause-oracle%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Wiesbaden

          Marschland

          Dieringhausen