A continuación son los datos de la lista.

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

Necesito un resultado para el grupo por el código y por el tipo y el total de la ItemCount y obtener el gran total de la Amount en cada fila.

Es esto posible?

Code   ItemCount    Type      Amount 
----------------------------------------
B001    2          Dell          20.00
B001    5          Apple         50.00
B114    2          Apple         40.50 
¿Por qué todo tiene la misma cantidad total?

OriginalEl autor user2617053 | 2013-07-25

6 Comentarios

  1. 26

    Por favor, inténtelo:

    SELECT
        Code,
        SUM(ItemCount) ItemCount,
        Type,
        SUM(Amount) Amount
    FROM
        YourTable
    GROUP BY Code, Type
    ORDER BY Code
    está agrupando itemcount, son usted seguro de que va a dar resultado correcto?
    Sí, estás en lo correcto @Abu. Fue un error.
    Utiliza el comando y funciona
    Incluso en el 2017 esta pregunta es pertinente, y no hay ninguna necesidad de que el (SELECT SUM(Amount) FROM YourTable) Amount parte. La sustitución que con sum(Amount) Amount es suficiente.

    OriginalEl autor TechDo

  2. 4

    Esto se parece a la tarea.

    (Juro que pensé que era etiquetado como MySQL cuando vi por primera vez en la pregunta, pero el título muestra claramente MS SQL)

    MySQL esta consulta devolverá el especificado conjunto de resultados:

    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

    Para otras bases de datos, quite Para MySQL las comillas simples inclinadas de todo el alias de columna.

    Si necesita conservar caso, por Oracle, identificadores están encerradas entre comillas dobles. Para SQL Server, los identificadores están entre corchetes. Para MySQL identificadores están encerradas en comillas simples inclinadas.

    OriginalEl autor spencer7593

  3. 2

    Usted puede probar esta solución más simple:

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

    La comprensión del ‘grupo’ vendría a mano

    OriginalEl autor Pooja smithi

  4. 1

    Puedes probar con esta consulta:

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

    Esto le dará el resultado correcto. Usted necesidad de un grupo por Code y Type y no ItemCount

    OriginalEl autor Abubakkar

  5. 0

    Las cantidades que dar difieren de los datos de la muestra, pero esto funciona para la muestra de los valores de los datos:

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

    OriginalEl autor andrewb

  6. 0

    Si mi interpretación es correcta, que el total real de cada fila es el producto de la itemcount y la cantidad a continuación, puede utilizar el código siguiente. Si no usa la @Abu código.

    ;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

    OriginalEl autor hallie

Dejar respuesta

Please enter your comment!
Please enter your name here