How to create a return statement in Redshift












0















I have following sql on SQL server



declare @groupName varchar(50)

select @groupName=groupIdentifier from tab1 where col3 ='ABC'

if @groupName is not NULL
select @groupName
return

select @groupName=col2 from tab2 where col1= 'BCD'
if @groupName is not NULL
select @groupName
return


I translated into RedShift as follows:



 create temp table t1
(groupName)
---- Statement 1 -----
insert into t1 select groupIdentifier from tab1 where col3 ='ABC'
---- Statement 2 -----
insert into t1 select col2 from tab2 where col1= 'BCD' and (select count(1) from t1)=0
select * from t1


As there is no return statement in RedShift , Statement 2 always gets executed even when Statement 1 was able to fetch row. As second statement is expensive, how do I efficiently prevent it from being executed if Statement 1 is successful.










share|improve this question

























  • pleasr remove postgresql tag - its not the same as redshift

    – Jon Scott
    Nov 14 '18 at 8:25











  • you need to control this using a scripting language outside of redshift.

    – Jon Scott
    Nov 14 '18 at 8:26
















0















I have following sql on SQL server



declare @groupName varchar(50)

select @groupName=groupIdentifier from tab1 where col3 ='ABC'

if @groupName is not NULL
select @groupName
return

select @groupName=col2 from tab2 where col1= 'BCD'
if @groupName is not NULL
select @groupName
return


I translated into RedShift as follows:



 create temp table t1
(groupName)
---- Statement 1 -----
insert into t1 select groupIdentifier from tab1 where col3 ='ABC'
---- Statement 2 -----
insert into t1 select col2 from tab2 where col1= 'BCD' and (select count(1) from t1)=0
select * from t1


As there is no return statement in RedShift , Statement 2 always gets executed even when Statement 1 was able to fetch row. As second statement is expensive, how do I efficiently prevent it from being executed if Statement 1 is successful.










share|improve this question

























  • pleasr remove postgresql tag - its not the same as redshift

    – Jon Scott
    Nov 14 '18 at 8:25











  • you need to control this using a scripting language outside of redshift.

    – Jon Scott
    Nov 14 '18 at 8:26














0












0








0








I have following sql on SQL server



declare @groupName varchar(50)

select @groupName=groupIdentifier from tab1 where col3 ='ABC'

if @groupName is not NULL
select @groupName
return

select @groupName=col2 from tab2 where col1= 'BCD'
if @groupName is not NULL
select @groupName
return


I translated into RedShift as follows:



 create temp table t1
(groupName)
---- Statement 1 -----
insert into t1 select groupIdentifier from tab1 where col3 ='ABC'
---- Statement 2 -----
insert into t1 select col2 from tab2 where col1= 'BCD' and (select count(1) from t1)=0
select * from t1


As there is no return statement in RedShift , Statement 2 always gets executed even when Statement 1 was able to fetch row. As second statement is expensive, how do I efficiently prevent it from being executed if Statement 1 is successful.










share|improve this question
















I have following sql on SQL server



declare @groupName varchar(50)

select @groupName=groupIdentifier from tab1 where col3 ='ABC'

if @groupName is not NULL
select @groupName
return

select @groupName=col2 from tab2 where col1= 'BCD'
if @groupName is not NULL
select @groupName
return


I translated into RedShift as follows:



 create temp table t1
(groupName)
---- Statement 1 -----
insert into t1 select groupIdentifier from tab1 where col3 ='ABC'
---- Statement 2 -----
insert into t1 select col2 from tab2 where col1= 'BCD' and (select count(1) from t1)=0
select * from t1


As there is no return statement in RedShift , Statement 2 always gets executed even when Statement 1 was able to fetch row. As second statement is expensive, how do I efficiently prevent it from being executed if Statement 1 is successful.







amazon-redshift






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 8:40









a_horse_with_no_name

296k46451546




296k46451546










asked Nov 13 '18 at 23:39









user3376169user3376169

85118




85118













  • pleasr remove postgresql tag - its not the same as redshift

    – Jon Scott
    Nov 14 '18 at 8:25











  • you need to control this using a scripting language outside of redshift.

    – Jon Scott
    Nov 14 '18 at 8:26



















  • pleasr remove postgresql tag - its not the same as redshift

    – Jon Scott
    Nov 14 '18 at 8:25











  • you need to control this using a scripting language outside of redshift.

    – Jon Scott
    Nov 14 '18 at 8:26

















pleasr remove postgresql tag - its not the same as redshift

– Jon Scott
Nov 14 '18 at 8:25





pleasr remove postgresql tag - its not the same as redshift

– Jon Scott
Nov 14 '18 at 8:25













you need to control this using a scripting language outside of redshift.

– Jon Scott
Nov 14 '18 at 8:26





you need to control this using a scripting language outside of redshift.

– Jon Scott
Nov 14 '18 at 8:26












1 Answer
1






active

oldest

votes


















0














You cannot recreate this logic using only SQL statements on Redshift. Redshift SQL syntax does not contain control-of-flow commands like IF and RETURN.



Typically, you will need some kind of external program or script to manage the control-of-flow logic to work out which SQL statements to execute and what result to return.






share|improve this answer























    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%2f53291083%2fhow-to-create-a-return-statement-in-redshift%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









    0














    You cannot recreate this logic using only SQL statements on Redshift. Redshift SQL syntax does not contain control-of-flow commands like IF and RETURN.



    Typically, you will need some kind of external program or script to manage the control-of-flow logic to work out which SQL statements to execute and what result to return.






    share|improve this answer




























      0














      You cannot recreate this logic using only SQL statements on Redshift. Redshift SQL syntax does not contain control-of-flow commands like IF and RETURN.



      Typically, you will need some kind of external program or script to manage the control-of-flow logic to work out which SQL statements to execute and what result to return.






      share|improve this answer


























        0












        0








        0







        You cannot recreate this logic using only SQL statements on Redshift. Redshift SQL syntax does not contain control-of-flow commands like IF and RETURN.



        Typically, you will need some kind of external program or script to manage the control-of-flow logic to work out which SQL statements to execute and what result to return.






        share|improve this answer













        You cannot recreate this logic using only SQL statements on Redshift. Redshift SQL syntax does not contain control-of-flow commands like IF and RETURN.



        Typically, you will need some kind of external program or script to manage the control-of-flow logic to work out which SQL statements to execute and what result to return.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 14 '18 at 8:39









        Nathan GriffithsNathan Griffiths

        8,65722239




        8,65722239






























            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%2f53291083%2fhow-to-create-a-return-statement-in-redshift%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

            Florida Star v. B. J. F.

            Error while running script in elastic search , gateway timeout

            Adding quotations to stringified JSON object values