Group by two columns and display grand total in every row

后端 未结 6 1055
太阳男子
太阳男子 2020-12-06 05:00

Below are the list data.

Code   ItemCount   Type      Amount 
----------------------------------------
B001    1          Dell         10.00
B001    1                


        
相关标签:
6条回答
  • 2020-12-06 05:11

    You can try this simpler solution:

    select Code,sum(ItemCount),Type,sum(Amount) from table group by code,type
    

    Understanding the 'group by' would come handy

    0 讨论(0)
  • 2020-12-06 05:16

    If my understanding is correct that the actual total of each row is the product of the itemcount and the amount then you can use the code below. If not use @Abu's code.

    ;WITH cte AS
    (
        SELECT Code, ItemCount, Type, Amount, ItemCount * Amount AS TotalAmount FROM <Table>
    )
    SELECT 
        Code,
        SUM(ItemCount),
        Type,
        SUM(TotalAmount)
    FROM cte
    GROUP BY Code, Type
    
    0 讨论(0)
  • 2020-12-06 05:21

    The amounts you give differ from the sample data but this works for the sample data values:

    SELECT Code, SUM(ItemCount) AS ItemCount, [Type], SUM(Amount) AS Amount 
    FROM dbo.TestSubs GROUP BY Code,[Type] ORDER BY Code
    
    0 讨论(0)
  • 2020-12-06 05:23

    This looks like homework.

    (I swear I thought this was tagged as MySQL when I first looked at the question, but the title clearly shows MS SQL)

    For MySQL, this query will return the specified resultset:

    SELECT t.Code
         , SUM(t.ItemCount) AS ItemCount
         , t.Type
         , s.Amount AS Amount
      FROM mytable t
     CROSS
      JOIN ( SELECT SUM(r.Amount) AS Amount
               FROM mytable r
           ) s 
     GROUP
        BY t.Code
         , t.Type
     ORDER BY t.Code ASC, t.Type DESC
    

    For other databases, remove For MySQL the backticks from around the column aliases.

    If you need to preserve case, for Oracle, identifiers are enclosed in doublequotes. For SQL Server, identifiers are enclosed in square brackets. For MySQL identifiers are enclosed in backticks.

    0 讨论(0)
  • 2020-12-06 05:31

    Please try:

    SELECT
        Code,
        SUM(ItemCount) ItemCount,
        Type,
        SUM(Amount) Amount
    FROM
        YourTable
    GROUP BY Code, Type
    ORDER BY Code
    
    0 讨论(0)
  • 2020-12-06 05:36

    You can try this query:

    SELECT Code,SUM(ItemCount) AS ItemCount,Type,SUM(Amount) AS Amount
    FROM
        table
    GROUP BY Code, Type
    

    This will give you proper result. You need to group by Code and Type and not ItemCount

    0 讨论(0)
提交回复
热议问题