How to adjust SQL aggregation by date query result to merge values in same level where nulls exist for some...





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







2















Sorry for the messy title but here is my problem description.



| id|dateKey|colA|colB|colD|colE|
+---+-------+----+----+----+----+
| 1 |180111 | 1 | 5 |Null|Null|
| 2 |180111 |Null|Null| 6 | 7 |
| 3 |180111 | 2 | 5 | 3 | 2 |


I have the above table data but I want the result to appear as below when data aggregated (e.g. sum) by date:



|dateKey|colA|colB|colD|colE|
+-------+----+----+----+----+
|180111 | 3 | 10 |9 |9 |


Is there a way to do it as I am struggling to achieve it?



Note: this query will be running on 10 Gb of data with date filters.










share|improve this question

























  • Do you have a sample query? You can use coalesce to convert null or empty record to zero

    – jned29
    Jan 3 at 5:28













  • You can find the answer and live demo her- rextester.com/MKYY62432

    – Suraj Kumar
    Jan 3 at 5:38


















2















Sorry for the messy title but here is my problem description.



| id|dateKey|colA|colB|colD|colE|
+---+-------+----+----+----+----+
| 1 |180111 | 1 | 5 |Null|Null|
| 2 |180111 |Null|Null| 6 | 7 |
| 3 |180111 | 2 | 5 | 3 | 2 |


I have the above table data but I want the result to appear as below when data aggregated (e.g. sum) by date:



|dateKey|colA|colB|colD|colE|
+-------+----+----+----+----+
|180111 | 3 | 10 |9 |9 |


Is there a way to do it as I am struggling to achieve it?



Note: this query will be running on 10 Gb of data with date filters.










share|improve this question

























  • Do you have a sample query? You can use coalesce to convert null or empty record to zero

    – jned29
    Jan 3 at 5:28













  • You can find the answer and live demo her- rextester.com/MKYY62432

    – Suraj Kumar
    Jan 3 at 5:38














2












2








2








Sorry for the messy title but here is my problem description.



| id|dateKey|colA|colB|colD|colE|
+---+-------+----+----+----+----+
| 1 |180111 | 1 | 5 |Null|Null|
| 2 |180111 |Null|Null| 6 | 7 |
| 3 |180111 | 2 | 5 | 3 | 2 |


I have the above table data but I want the result to appear as below when data aggregated (e.g. sum) by date:



|dateKey|colA|colB|colD|colE|
+-------+----+----+----+----+
|180111 | 3 | 10 |9 |9 |


Is there a way to do it as I am struggling to achieve it?



Note: this query will be running on 10 Gb of data with date filters.










share|improve this question
















Sorry for the messy title but here is my problem description.



| id|dateKey|colA|colB|colD|colE|
+---+-------+----+----+----+----+
| 1 |180111 | 1 | 5 |Null|Null|
| 2 |180111 |Null|Null| 6 | 7 |
| 3 |180111 | 2 | 5 | 3 | 2 |


I have the above table data but I want the result to appear as below when data aggregated (e.g. sum) by date:



|dateKey|colA|colB|colD|colE|
+-------+----+----+----+----+
|180111 | 3 | 10 |9 |9 |


Is there a way to do it as I am struggling to achieve it?



Note: this query will be running on 10 Gb of data with date filters.







sql sql-server tsql aggregate






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 6:19









marc_s

584k13011241270




584k13011241270










asked Jan 3 at 5:27









BumbleBeeBumbleBee

426




426













  • Do you have a sample query? You can use coalesce to convert null or empty record to zero

    – jned29
    Jan 3 at 5:28













  • You can find the answer and live demo her- rextester.com/MKYY62432

    – Suraj Kumar
    Jan 3 at 5:38



















  • Do you have a sample query? You can use coalesce to convert null or empty record to zero

    – jned29
    Jan 3 at 5:28













  • You can find the answer and live demo her- rextester.com/MKYY62432

    – Suraj Kumar
    Jan 3 at 5:38

















Do you have a sample query? You can use coalesce to convert null or empty record to zero

– jned29
Jan 3 at 5:28







Do you have a sample query? You can use coalesce to convert null or empty record to zero

– jned29
Jan 3 at 5:28















You can find the answer and live demo her- rextester.com/MKYY62432

– Suraj Kumar
Jan 3 at 5:38





You can find the answer and live demo her- rextester.com/MKYY62432

– Suraj Kumar
Jan 3 at 5:38












2 Answers
2






active

oldest

votes


















3














A simple GROUP BY query with SUM should already meet your needs:



SELECT
dateKey,
SUM(colA) AS colA,
SUM(colB) AS colB,
SUM(colD) AS colD,
SUM(colE) AS colE
FROM yourTable
GROUP BY dateKey;


The reason this should work is that SUM by default ignores NULL values, so only the numbers present should end up in the sum.






share|improve this answer































    1














    You can also use ISNULL to ignore and convert null values to zero as shown below.



    create table #temp (id int, dateKey int, colA int, colB int, colD int, colE int)
    insert into #temp values (1,180111, 1 , 5 ,Null,Null),
    ( 2,180111, Null , Null , 6 , 7 ),
    ( 3,180111, 2 , 5 , 3 , 2 )

    SELECT
    dateKey,
    SUM(ISNULL(colA,0)) AS colA,
    SUM(ISNULL(colB,0)) AS colB,
    SUM(ISNULL(colD,0)) AS colD,
    SUM(ISNULL(colE,0)) AS colE
    FROM #temp
    GROUP BY dateKey;





    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%2f54016777%2fhow-to-adjust-sql-aggregation-by-date-query-result-to-merge-values-in-same-level%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      3














      A simple GROUP BY query with SUM should already meet your needs:



      SELECT
      dateKey,
      SUM(colA) AS colA,
      SUM(colB) AS colB,
      SUM(colD) AS colD,
      SUM(colE) AS colE
      FROM yourTable
      GROUP BY dateKey;


      The reason this should work is that SUM by default ignores NULL values, so only the numbers present should end up in the sum.






      share|improve this answer




























        3














        A simple GROUP BY query with SUM should already meet your needs:



        SELECT
        dateKey,
        SUM(colA) AS colA,
        SUM(colB) AS colB,
        SUM(colD) AS colD,
        SUM(colE) AS colE
        FROM yourTable
        GROUP BY dateKey;


        The reason this should work is that SUM by default ignores NULL values, so only the numbers present should end up in the sum.






        share|improve this answer


























          3












          3








          3







          A simple GROUP BY query with SUM should already meet your needs:



          SELECT
          dateKey,
          SUM(colA) AS colA,
          SUM(colB) AS colB,
          SUM(colD) AS colD,
          SUM(colE) AS colE
          FROM yourTable
          GROUP BY dateKey;


          The reason this should work is that SUM by default ignores NULL values, so only the numbers present should end up in the sum.






          share|improve this answer













          A simple GROUP BY query with SUM should already meet your needs:



          SELECT
          dateKey,
          SUM(colA) AS colA,
          SUM(colB) AS colB,
          SUM(colD) AS colD,
          SUM(colE) AS colE
          FROM yourTable
          GROUP BY dateKey;


          The reason this should work is that SUM by default ignores NULL values, so only the numbers present should end up in the sum.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 3 at 5:29









          Tim BiegeleisenTim Biegeleisen

          237k13100160




          237k13100160

























              1














              You can also use ISNULL to ignore and convert null values to zero as shown below.



              create table #temp (id int, dateKey int, colA int, colB int, colD int, colE int)
              insert into #temp values (1,180111, 1 , 5 ,Null,Null),
              ( 2,180111, Null , Null , 6 , 7 ),
              ( 3,180111, 2 , 5 , 3 , 2 )

              SELECT
              dateKey,
              SUM(ISNULL(colA,0)) AS colA,
              SUM(ISNULL(colB,0)) AS colB,
              SUM(ISNULL(colD,0)) AS colD,
              SUM(ISNULL(colE,0)) AS colE
              FROM #temp
              GROUP BY dateKey;





              share|improve this answer




























                1














                You can also use ISNULL to ignore and convert null values to zero as shown below.



                create table #temp (id int, dateKey int, colA int, colB int, colD int, colE int)
                insert into #temp values (1,180111, 1 , 5 ,Null,Null),
                ( 2,180111, Null , Null , 6 , 7 ),
                ( 3,180111, 2 , 5 , 3 , 2 )

                SELECT
                dateKey,
                SUM(ISNULL(colA,0)) AS colA,
                SUM(ISNULL(colB,0)) AS colB,
                SUM(ISNULL(colD,0)) AS colD,
                SUM(ISNULL(colE,0)) AS colE
                FROM #temp
                GROUP BY dateKey;





                share|improve this answer


























                  1












                  1








                  1







                  You can also use ISNULL to ignore and convert null values to zero as shown below.



                  create table #temp (id int, dateKey int, colA int, colB int, colD int, colE int)
                  insert into #temp values (1,180111, 1 , 5 ,Null,Null),
                  ( 2,180111, Null , Null , 6 , 7 ),
                  ( 3,180111, 2 , 5 , 3 , 2 )

                  SELECT
                  dateKey,
                  SUM(ISNULL(colA,0)) AS colA,
                  SUM(ISNULL(colB,0)) AS colB,
                  SUM(ISNULL(colD,0)) AS colD,
                  SUM(ISNULL(colE,0)) AS colE
                  FROM #temp
                  GROUP BY dateKey;





                  share|improve this answer













                  You can also use ISNULL to ignore and convert null values to zero as shown below.



                  create table #temp (id int, dateKey int, colA int, colB int, colD int, colE int)
                  insert into #temp values (1,180111, 1 , 5 ,Null,Null),
                  ( 2,180111, Null , Null , 6 , 7 ),
                  ( 3,180111, 2 , 5 , 3 , 2 )

                  SELECT
                  dateKey,
                  SUM(ISNULL(colA,0)) AS colA,
                  SUM(ISNULL(colB,0)) AS colB,
                  SUM(ISNULL(colD,0)) AS colD,
                  SUM(ISNULL(colE,0)) AS colE
                  FROM #temp
                  GROUP BY dateKey;






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 3 at 5:42









                  Suraj KumarSuraj Kumar

                  2,79141026




                  2,79141026






























                      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%2f54016777%2fhow-to-adjust-sql-aggregation-by-date-query-result-to-merge-values-in-same-level%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

                      MongoDB - Not Authorized To Execute Command

                      How to fix TextFormField cause rebuild widget in Flutter

                      in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith