Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Visual Basic
  4. group by years

group by years

Scheduled Pinned Locked Moved Visual Basic
database
14 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Shahan Ayyub

    Hi! Could you please check this one: ( without calling DatePart() )

    SELECT SUM(total_sales) AS year_1, Client
    FROM vanzari_totale
    GROUP by invoice_date, client

    L Offline
    L Offline
    Luc Pattyn
    wrote on last edited by
    #5

    Nope. This will group on a daily basis, each distinct invoice_date value belongs to a different group. However, I have a solution, see my other message. :)

    Luc Pattyn [My Articles] Nil Volentibus Arduum

    1 Reply Last reply
    0
    • S sorin_zan

      hi everybody, I have a table whith a lot an invoice (2007, 2008, 2009 etc)and I want to group the invoice by years (2007, 2008 etc). A client may have many invoice every year. I try something but I didn't find a solution to SUM value of invoice for all years separately:

      SELECT SUM(total_sales) AS year_1, Client
      FROM vanzari_totale
      GROUP BY DATEPART('yyyy', invoice_date), Client

      Database is MS Access. Please is urgent. Thanks in advance!

      L Offline
      L Offline
      Luc Pattyn
      wrote on last edited by
      #6

      Hi, 1. you're in the wrong forum, this is a database question, not a VB one. So the SQL or Database forums are more appropriate. 2. this works fine on SQL Server:

      SELECT COUNT(1), year(payment_date) as year FROM payments GROUP BY year(payment_date)

      However it fails on Access, and so does this:

      SELECT COUNT(1), datepart("yyyy", payment_date) as year FROM payments GROUP BY datepart("yyyy", payment_date)

      However this does it:

      SELECT COUNT(1), datepart("yyyy", payment_date) as yr FROM payments GROUP BY datepart("yyyy", payment_date)

      so the only problem was SQL Server did and Access didn't accept "year" as an alias (it also is a function name). [ADDED]: one can use square brackets when there is a risk of clashing with reserved keywords, like so:

      SELECT COUNT(1) as [count], datepart("yyyy", payment_date) as [year] FROM payments GROUP BY datepart("yyyy", payment_date)

      [/ADDED] :)

      Luc Pattyn [My Articles] Nil Volentibus Arduum

      modified on Wednesday, August 24, 2011 12:09 AM

      S 2 Replies Last reply
      0
      • L Luc Pattyn

        Hi, 1. you're in the wrong forum, this is a database question, not a VB one. So the SQL or Database forums are more appropriate. 2. this works fine on SQL Server:

        SELECT COUNT(1), year(payment_date) as year FROM payments GROUP BY year(payment_date)

        However it fails on Access, and so does this:

        SELECT COUNT(1), datepart("yyyy", payment_date) as year FROM payments GROUP BY datepart("yyyy", payment_date)

        However this does it:

        SELECT COUNT(1), datepart("yyyy", payment_date) as yr FROM payments GROUP BY datepart("yyyy", payment_date)

        so the only problem was SQL Server did and Access didn't accept "year" as an alias (it also is a function name). [ADDED]: one can use square brackets when there is a risk of clashing with reserved keywords, like so:

        SELECT COUNT(1) as [count], datepart("yyyy", payment_date) as [year] FROM payments GROUP BY datepart("yyyy", payment_date)

        [/ADDED] :)

        Luc Pattyn [My Articles] Nil Volentibus Arduum

        modified on Wednesday, August 24, 2011 12:09 AM

        S Offline
        S Offline
        sorin_zan
        wrote on last edited by
        #7

        Thanks a lot for your kind answer, Luc! Now I'll try your suggestions.

        SELECT COUNT(1) as [count], datepart("yyyy", payment_date) as [year] FROM payments GROUP BY datepart("yyyy", payment_date)

        work good. But, there is a problem: 1. I would like to do something this client | 2007 | 2008 | 2009 | 2010 | 2011 | ----------------------------------------------------------- client_1 |1,200.78$ |267.89$ |.... |.... |..... | ----------------------------------------------------------- client_2 |678.67$ |5,76.00$|.... |.... |..... | means that, on each column to has a sum of all invoice from that year Sorry for my english... Could you help me again?

        S 1 Reply Last reply
        0
        • L Luc Pattyn

          Hi, 1. you're in the wrong forum, this is a database question, not a VB one. So the SQL or Database forums are more appropriate. 2. this works fine on SQL Server:

          SELECT COUNT(1), year(payment_date) as year FROM payments GROUP BY year(payment_date)

          However it fails on Access, and so does this:

          SELECT COUNT(1), datepart("yyyy", payment_date) as year FROM payments GROUP BY datepart("yyyy", payment_date)

          However this does it:

          SELECT COUNT(1), datepart("yyyy", payment_date) as yr FROM payments GROUP BY datepart("yyyy", payment_date)

          so the only problem was SQL Server did and Access didn't accept "year" as an alias (it also is a function name). [ADDED]: one can use square brackets when there is a risk of clashing with reserved keywords, like so:

          SELECT COUNT(1) as [count], datepart("yyyy", payment_date) as [year] FROM payments GROUP BY datepart("yyyy", payment_date)

          [/ADDED] :)

          Luc Pattyn [My Articles] Nil Volentibus Arduum

          modified on Wednesday, August 24, 2011 12:09 AM

          S Offline
          S Offline
          sorin_zan
          wrote on last edited by
          #8

          LUC, I think that the solution is:

          TRANSFORM Sum(Vanzari.Valoare) AS SumOfValoare
          SELECT Vanzari.Client
          FROM Vanzari
          GROUP BY Vanzari.Client
          PIVOT Month([Data]);

          and work good, this I have a column for each year and sum of invoice/year/client

          S 1 Reply Last reply
          0
          • S Shahan Ayyub

            Hi! Could you please check this one: ( without calling DatePart() )

            SELECT SUM(total_sales) AS year_1, Client
            FROM vanzari_totale
            GROUP by invoice_date, client

            S Offline
            S Offline
            sorin_zan
            wrote on last edited by
            #9

            thanks but don't work... I find a solution:

            TRANSFORM Sum(Vanzari.Valoare) AS SumOfValoare
            SELECT Vanzari.Client
            FROM Vanzari
            GROUP BY Vanzari.Client
            PIVOT Month([Data]

            )

            1 Reply Last reply
            0
            • S sorin_zan

              LUC, I think that the solution is:

              TRANSFORM Sum(Vanzari.Valoare) AS SumOfValoare
              SELECT Vanzari.Client
              FROM Vanzari
              GROUP BY Vanzari.Client
              PIVOT Month([Data]);

              and work good, this I have a column for each year and sum of invoice/year/client

              S Offline
              S Offline
              sorin_zan
              wrote on last edited by
              #10

              OFFFF!!! It didn't work. TRANSFORM is not recognize in design mod, using Query Wizard of TableAdapter.

              1 Reply Last reply
              0
              • S sorin_zan

                Thanks a lot for your kind answer, Luc! Now I'll try your suggestions.

                SELECT COUNT(1) as [count], datepart("yyyy", payment_date) as [year] FROM payments GROUP BY datepart("yyyy", payment_date)

                work good. But, there is a problem: 1. I would like to do something this client | 2007 | 2008 | 2009 | 2010 | 2011 | ----------------------------------------------------------- client_1 |1,200.78$ |267.89$ |.... |.... |..... | ----------------------------------------------------------- client_2 |678.67$ |5,76.00$|.... |.... |..... | means that, on each column to has a sum of all invoice from that year Sorry for my english... Could you help me again?

                S Offline
                S Offline
                Shahan Ayyub
                wrote on last edited by
                #11

                Have a look at this query:

                select SUM([total_sales]) as [Total], [Client],year([invoice_date]) as [InvoDate]
                FROM vanzari_totale
                group by [client], year([invoice_date])

                S 1 Reply Last reply
                0
                • S Shahan Ayyub

                  Have a look at this query:

                  select SUM([total_sales]) as [Total], [Client],year([invoice_date]) as [InvoDate]
                  FROM vanzari_totale
                  group by [client], year([invoice_date])

                  S Offline
                  S Offline
                  sorin_zan
                  wrote on last edited by
                  #12

                  thanks for your kind post, but your solution isn't one good for me because the years appear in row not in column

                  3545,3 2007 client_1 1
                  433,33 2008 client_1 1
                  77756,1 2009 client_1 1
                  3423,7 2010 client_1 1
                  1234,44 2011 client_1 1

                  I think that the only solution is to use TRANSFORM.....PIVOT Right? Or there is another solution? Please let me know if is true. Thanks a lot for your support!

                  S 1 Reply Last reply
                  0
                  • S sorin_zan

                    thanks for your kind post, but your solution isn't one good for me because the years appear in row not in column

                    3545,3 2007 client_1 1
                    433,33 2008 client_1 1
                    77756,1 2009 client_1 1
                    3423,7 2010 client_1 1
                    1234,44 2011 client_1 1

                    I think that the only solution is to use TRANSFORM.....PIVOT Right? Or there is another solution? Please let me know if is true. Thanks a lot for your support!

                    S Offline
                    S Offline
                    Shahan Ayyub
                    wrote on last edited by
                    #13

                    The format you have provided for output, it seems that you want to use it in chart control? Is it right?

                    S 1 Reply Last reply
                    0
                    • S Shahan Ayyub

                      The format you have provided for output, it seems that you want to use it in chart control? Is it right?

                      S Offline
                      S Offline
                      sorin_zan
                      wrote on last edited by
                      #14

                      No, it's only interogate for a datagrid. I want to do this for a rapid information of sales agents about history of customer. It's a small office application...

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups