Use a CASE WHEN in the same SELECT command?











up vote
1
down vote

favorite
1












A simple Select x, y , z from Table query is containing a "Case when" in the select.



This field is ending as "End as 'result field'".



I would like to use that 'result field' in another command as part of the same SELECT command (a Dateadd command).



SELECT
PositionDate,
ISIN,
Issuer,
FirstCouponDate,
TermLength,
TermUnit,
CASE
WHEN TermUnit = 'Years' THEN 'year'
WHEN TermUnit = 'Months' THEN 'month'
END AS 'TermUnitRenamed',
DATEADD(TermUnitRenamed, TermLength, FirstCouponDate),
FROM
GIBDataWarehouse.dbo.vw_Positions









share|improve this question




























    up vote
    1
    down vote

    favorite
    1












    A simple Select x, y , z from Table query is containing a "Case when" in the select.



    This field is ending as "End as 'result field'".



    I would like to use that 'result field' in another command as part of the same SELECT command (a Dateadd command).



    SELECT
    PositionDate,
    ISIN,
    Issuer,
    FirstCouponDate,
    TermLength,
    TermUnit,
    CASE
    WHEN TermUnit = 'Years' THEN 'year'
    WHEN TermUnit = 'Months' THEN 'month'
    END AS 'TermUnitRenamed',
    DATEADD(TermUnitRenamed, TermLength, FirstCouponDate),
    FROM
    GIBDataWarehouse.dbo.vw_Positions









    share|improve this question


























      up vote
      1
      down vote

      favorite
      1









      up vote
      1
      down vote

      favorite
      1






      1





      A simple Select x, y , z from Table query is containing a "Case when" in the select.



      This field is ending as "End as 'result field'".



      I would like to use that 'result field' in another command as part of the same SELECT command (a Dateadd command).



      SELECT
      PositionDate,
      ISIN,
      Issuer,
      FirstCouponDate,
      TermLength,
      TermUnit,
      CASE
      WHEN TermUnit = 'Years' THEN 'year'
      WHEN TermUnit = 'Months' THEN 'month'
      END AS 'TermUnitRenamed',
      DATEADD(TermUnitRenamed, TermLength, FirstCouponDate),
      FROM
      GIBDataWarehouse.dbo.vw_Positions









      share|improve this question















      A simple Select x, y , z from Table query is containing a "Case when" in the select.



      This field is ending as "End as 'result field'".



      I would like to use that 'result field' in another command as part of the same SELECT command (a Dateadd command).



      SELECT
      PositionDate,
      ISIN,
      Issuer,
      FirstCouponDate,
      TermLength,
      TermUnit,
      CASE
      WHEN TermUnit = 'Years' THEN 'year'
      WHEN TermUnit = 'Months' THEN 'month'
      END AS 'TermUnitRenamed',
      DATEADD(TermUnitRenamed, TermLength, FirstCouponDate),
      FROM
      GIBDataWarehouse.dbo.vw_Positions






      sql case case-when dateadd






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 9 at 21:14









      marc_s

      567k12610941246




      567k12610941246










      asked Nov 9 at 17:57









      tweedi

      82




      82
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote



          accepted










          Two suggestions based on the information you provided: add an ELSE default value to your CASE statement; then, nest this query inside a subsequent one so you can reference your new created field.



          select
          *
          , case
          when TermUnitRenamed = 'year' then DateAdd(year, TermLength, FirstCouponDate)
          when TermUnitRenamed = 'month' then DateAdd(month, TermLength, FirstCouponDate)
          when TermUnitRenamed = 'day' then DateAdd(day, TermLength, FirstCouponDate)
          end as newDate
          from (
          select
          PositionDate
          , ISIN
          , Issuer
          , FirstCouponDate
          , TermLength
          , TermUnit
          , case
          when TermUnit = 'Years' then 'year'
          when TermUnit = 'Months' then 'month'
          else 'day' -- assumes default 'day' unit
          end AS TermUnitRenamed
          from GIBDataWarehouse.dbo.vw_Positions
          ) x


          Of course, you could just apply the CASE and DATEADD logic in original query itself and avoid nesting altogether if you don’t need TermUnitRenamed for anything else.



          select
          PositionDate
          , ISIN
          , Issuer
          , FirstCouponDate
          , TermLength
          , TermUnit
          , case
          when TermUnit = 'Years' then DateAdd(year, TermLength, FirstCouponDate)
          when TermUnit = 'Months' then DateAdd(month, TermLength, FirstCouponDate)
          else then DateAdd(day, TermLength, FirstCouponDate) -- assumes default 'day' unit
          end AS newDate
          from GIBDataWarehouse.dbo.vw_Positions





          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',
            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%2f53231033%2fuse-a-case-when-in-the-same-select-command%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








            up vote
            0
            down vote



            accepted










            Two suggestions based on the information you provided: add an ELSE default value to your CASE statement; then, nest this query inside a subsequent one so you can reference your new created field.



            select
            *
            , case
            when TermUnitRenamed = 'year' then DateAdd(year, TermLength, FirstCouponDate)
            when TermUnitRenamed = 'month' then DateAdd(month, TermLength, FirstCouponDate)
            when TermUnitRenamed = 'day' then DateAdd(day, TermLength, FirstCouponDate)
            end as newDate
            from (
            select
            PositionDate
            , ISIN
            , Issuer
            , FirstCouponDate
            , TermLength
            , TermUnit
            , case
            when TermUnit = 'Years' then 'year'
            when TermUnit = 'Months' then 'month'
            else 'day' -- assumes default 'day' unit
            end AS TermUnitRenamed
            from GIBDataWarehouse.dbo.vw_Positions
            ) x


            Of course, you could just apply the CASE and DATEADD logic in original query itself and avoid nesting altogether if you don’t need TermUnitRenamed for anything else.



            select
            PositionDate
            , ISIN
            , Issuer
            , FirstCouponDate
            , TermLength
            , TermUnit
            , case
            when TermUnit = 'Years' then DateAdd(year, TermLength, FirstCouponDate)
            when TermUnit = 'Months' then DateAdd(month, TermLength, FirstCouponDate)
            else then DateAdd(day, TermLength, FirstCouponDate) -- assumes default 'day' unit
            end AS newDate
            from GIBDataWarehouse.dbo.vw_Positions





            share|improve this answer



























              up vote
              0
              down vote



              accepted










              Two suggestions based on the information you provided: add an ELSE default value to your CASE statement; then, nest this query inside a subsequent one so you can reference your new created field.



              select
              *
              , case
              when TermUnitRenamed = 'year' then DateAdd(year, TermLength, FirstCouponDate)
              when TermUnitRenamed = 'month' then DateAdd(month, TermLength, FirstCouponDate)
              when TermUnitRenamed = 'day' then DateAdd(day, TermLength, FirstCouponDate)
              end as newDate
              from (
              select
              PositionDate
              , ISIN
              , Issuer
              , FirstCouponDate
              , TermLength
              , TermUnit
              , case
              when TermUnit = 'Years' then 'year'
              when TermUnit = 'Months' then 'month'
              else 'day' -- assumes default 'day' unit
              end AS TermUnitRenamed
              from GIBDataWarehouse.dbo.vw_Positions
              ) x


              Of course, you could just apply the CASE and DATEADD logic in original query itself and avoid nesting altogether if you don’t need TermUnitRenamed for anything else.



              select
              PositionDate
              , ISIN
              , Issuer
              , FirstCouponDate
              , TermLength
              , TermUnit
              , case
              when TermUnit = 'Years' then DateAdd(year, TermLength, FirstCouponDate)
              when TermUnit = 'Months' then DateAdd(month, TermLength, FirstCouponDate)
              else then DateAdd(day, TermLength, FirstCouponDate) -- assumes default 'day' unit
              end AS newDate
              from GIBDataWarehouse.dbo.vw_Positions





              share|improve this answer

























                up vote
                0
                down vote



                accepted







                up vote
                0
                down vote



                accepted






                Two suggestions based on the information you provided: add an ELSE default value to your CASE statement; then, nest this query inside a subsequent one so you can reference your new created field.



                select
                *
                , case
                when TermUnitRenamed = 'year' then DateAdd(year, TermLength, FirstCouponDate)
                when TermUnitRenamed = 'month' then DateAdd(month, TermLength, FirstCouponDate)
                when TermUnitRenamed = 'day' then DateAdd(day, TermLength, FirstCouponDate)
                end as newDate
                from (
                select
                PositionDate
                , ISIN
                , Issuer
                , FirstCouponDate
                , TermLength
                , TermUnit
                , case
                when TermUnit = 'Years' then 'year'
                when TermUnit = 'Months' then 'month'
                else 'day' -- assumes default 'day' unit
                end AS TermUnitRenamed
                from GIBDataWarehouse.dbo.vw_Positions
                ) x


                Of course, you could just apply the CASE and DATEADD logic in original query itself and avoid nesting altogether if you don’t need TermUnitRenamed for anything else.



                select
                PositionDate
                , ISIN
                , Issuer
                , FirstCouponDate
                , TermLength
                , TermUnit
                , case
                when TermUnit = 'Years' then DateAdd(year, TermLength, FirstCouponDate)
                when TermUnit = 'Months' then DateAdd(month, TermLength, FirstCouponDate)
                else then DateAdd(day, TermLength, FirstCouponDate) -- assumes default 'day' unit
                end AS newDate
                from GIBDataWarehouse.dbo.vw_Positions





                share|improve this answer














                Two suggestions based on the information you provided: add an ELSE default value to your CASE statement; then, nest this query inside a subsequent one so you can reference your new created field.



                select
                *
                , case
                when TermUnitRenamed = 'year' then DateAdd(year, TermLength, FirstCouponDate)
                when TermUnitRenamed = 'month' then DateAdd(month, TermLength, FirstCouponDate)
                when TermUnitRenamed = 'day' then DateAdd(day, TermLength, FirstCouponDate)
                end as newDate
                from (
                select
                PositionDate
                , ISIN
                , Issuer
                , FirstCouponDate
                , TermLength
                , TermUnit
                , case
                when TermUnit = 'Years' then 'year'
                when TermUnit = 'Months' then 'month'
                else 'day' -- assumes default 'day' unit
                end AS TermUnitRenamed
                from GIBDataWarehouse.dbo.vw_Positions
                ) x


                Of course, you could just apply the CASE and DATEADD logic in original query itself and avoid nesting altogether if you don’t need TermUnitRenamed for anything else.



                select
                PositionDate
                , ISIN
                , Issuer
                , FirstCouponDate
                , TermLength
                , TermUnit
                , case
                when TermUnit = 'Years' then DateAdd(year, TermLength, FirstCouponDate)
                when TermUnit = 'Months' then DateAdd(month, TermLength, FirstCouponDate)
                else then DateAdd(day, TermLength, FirstCouponDate) -- assumes default 'day' unit
                end AS newDate
                from GIBDataWarehouse.dbo.vw_Positions






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 9 at 18:48

























                answered Nov 9 at 18:02









                openwonk

                6,00011517




                6,00011517






























                    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.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • 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%2f53231033%2fuse-a-case-when-in-the-same-select-command%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

                    Schultheiß

                    Verwaltungsgliederung Dänemarks

                    Liste der Kulturdenkmale in Wilsdruff