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 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!

    D Offline
    D Offline
    Dalek Dave
    wrote on last edited by
    #3

    Not clear. Why not just pull all invoices by year? or do you need them totaled? Or do you want them sorted? More info please.

    ------------------------------------ I will never again mention that I was the poster of the One Millionth Lounge Post, nor that it was complete drivel. Dalek Dave CCC Link[^] Trolls[^]

    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!

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

      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 S 2 Replies 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

        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