2013-07-25 6 views
15

Di seguito sono elencati i dati.Raggruppa per due colonne e visualizza il totale generale in ogni riga

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 

Ho bisogno di un risultato di gruppo per codice e per tipo e il Totale ItemCount e ottenere il totale del Amount in ogni riga.

È possibile?

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

Perché tutto ha lo stesso importo totale? – hallie

risposta

22

Si prega di provare:

SELECT 
    Code, 
    SUM(ItemCount) ItemCount, 
    Type, 
    SUM(Amount) Amount 
FROM 
    YourTable 
GROUP BY Code, Type 
ORDER BY Code 
+0

che stai raggruppando per itemcount, sei sicuro che darà il risultato corretto? – Abubakkar

+0

Sì, sei corretto @Abu. È stato un errore. – TechDo

+0

Utilizzato questo comando e funziona – user2617053

1

si può provare questa query:

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

questo vi darà risultato corretto. È necessario raggruppare per Code e Type e non ItemCount

3

Questo sembra come i compiti.

(giuro ho pensato che questo è stato etichettato come MySQL quando ho guardato la domanda, ma il titolo mostra chiaramente MS SQL)

Per MySQL, questa query restituirà il gruppo di risultati specificato:

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 

Per altri database, rimuovere Per MySQL i backticks provenienti da tutto l'alias di colonna.

Se è necessario conservare il caso, per Oracle gli identificatori sono racchiusi tra doppie virgolette. Per SQL Server, gli identificatori sono racchiusi tra parentesi quadre. Per gli identificatori MySQL sono inclusi i backtick.

0

Gli importi si dà differire dai dati di esempio, ma questo funziona per i valori dei dati di esempio:

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

Se la mia comprensione è corretto che il totale effettivo di ogni riga è il prodotto della ItemCount e la quantità allora puoi usare il codice qui sotto. Se non usi il codice di @ Abu.

;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 
2

Si può provare questa soluzione più semplice:

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

Comprendere il 'gruppo da' sarebbe venuto a portata di mano

Problemi correlati