복붙노트

[SQL] 모든 행에 두 개의 열이 표시 총계에 의해 그룹

SQL

모든 행에 두 개의 열이 표시 총계에 의해 그룹

아래 목록의 데이터입니다.

Code   ItemCount   Type      Amount 
----------------------------------------
B001    1          Dell         10.00
B001    1          Dell         10.00
B001    1          Apple        10.00
B001    2          Apple        20.00
B001    2          Apple        20.00
B114    1          Apple        30.50
B114    1          Apple        10.00

나는 코드를 입력하여 그룹에 결과를 필요로하고 ITEMCOUNT 총 모든 행의 금액의 총계를 얻을.

이게 가능해?

Code   ItemCount    Type      Amount 
----------------------------------------
B001    2          Dell          20.00
B001    5          Apple         50.00
B114    2          Apple         40.50 

해결법

  1. ==============================

    1.시도하십시오 :

    시도하십시오 :

    SELECT
        Code,
        SUM(ItemCount) ItemCount,
        Type,
        SUM(Amount) Amount
    FROM
        YourTable
    GROUP BY Code, Type
    ORDER BY Code
    
  2. ==============================

    2.이 숙제처럼 보인다.

    이 숙제처럼 보인다.

    (난 내가 먼저 질문을 보았을 때이 MySQL을로 태그 된 생각 맹세하지만, 제목은 분명 MS SQL을 보여줍니다)

    MySQL의 경우,이 쿼리는 지정된 결과 집합을 반환합니다 :

    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
    

    다른 데이터베이스의 경우, 열 별칭 주위에서 MySQL을 위해 역 따옴표를 제거합니다.

    당신이 사건을 보존해야하는 경우, 오라클에 대한 식별자는 쌍 따옴표로 묶여있다. SQL Server의 경우, 식별자는 대괄호로 묶습니다. MySQL을위한 식별자는 역 따옴표로 묶습니다.

  3. ==============================

    3.이 간단한 해결책을 시도 할 수 있습니다 :

    이 간단한 해결책을 시도 할 수 있습니다 :

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

    '그룹화'를 이해하는 것은 편리 올 것

  4. ==============================

    4.이 쿼리를 시도 할 수 있습니다 :

    이 쿼리를 시도 할 수 있습니다 :

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

    이것은 당신에게 적절한 결과를 제공 할 것입니다. 당신은 코드와 유형 및하지 않음으로써 그룹에 필요 ITEMCOUNT

  5. ==============================

    5.당신이주는 금액은 샘플 데이터하지만, 샘플 데이터 값이 작품 다릅니다

    당신이주는 금액은 샘플 데이터하지만, 샘플 데이터 값이 작품 다릅니다

    SELECT Code, SUM(ItemCount) AS ItemCount, [Type], SUM(Amount) AS Amount 
    FROM dbo.TestSubs GROUP BY Code,[Type] ORDER BY Code
    
  6. ==============================

    6.나의 이해가 올바른 경우 각 행의 실제 총은 ITEMCOUNT 한 다음 아래의 코드를 사용할 수있는 양의 제품이다. 하지 않으면 것은 아부의 코드 @ 사용합니다.

    나의 이해가 올바른 경우 각 행의 실제 총은 ITEMCOUNT 한 다음 아래의 코드를 사용할 수있는 양의 제품이다. 하지 않으면 것은 아부의 코드 @ 사용합니다.

    ;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
    
  7. from https://stackoverflow.com/questions/17848886/group-by-two-columns-and-display-grand-total-in-every-row by cc-by-sa and MIT license