2013-05-14 13 views
6

Ho problemi di interrogazione in SQL Server 2008, ho cercato su Internet ma non ho trovato nulla o non mi dà alcuna idea su come farlo.Sommare il valore della colonna in modo incrementale con la stessa colonna ID

Utilizzando database Northwind, ho bisogno di interrogare i OrderDetails tabella e selezionare IDOrdine e PrezzoUnitario mostrando qualcosa di simile,

OrderID - UnitPrice 
------------------------ 
10248  -  14.00 
10248  -  9.80 
10248  -  34.80 
10249  -  18.60 

risultato dovrebbe essere:

OrderID - UnitPrice 
------------------------ 
10248  -  14.00 
10248  -  23.80 
10248  -  58.6 
10249  -  18.60 
+0

Sono anche curioso su come questo può essere risolto senza l'utilizzo di una tabella temporanea per memorizzare le somme intermedie. – Axarydax

+0

Quale DB? Oracle può farlo facilmente, come può MSSQL 2012 – Matthew

+0

Possibile duplicato di http://stackoverflow.com/questions/11664142/cumulative-total-in-ms-sql-server – TechDo

risposta

5

Si prega di verificare:

;with T as(
    select 
     *, 
     ROW_NUMBER() over (partition by OrderID order by OrderID) RNum 
    from YourTable 
) 
select 
    *, 
    (select sum(UnitPrice) from T b where b.OrderID=a.OrderID and b.RNum<=a.RNum) CumTotal 
From T a 

Prova a SQL Fiddle

+0

+1 è così ... simulare la funzione 'LAG' – Matthew

+0

+1 ... Soluzione perfetta –

+0

WOW! funziona! ... grazie mille @techdo. . . Sto imparando qui ... grazie, buona giornata .... – Markmeplease

-2

possono fare riferimento seguente:

SELECT t1.id, 
     t1.unitprice, 
     SUM(t2.unitprice) AS SUM 
FROM t t1 
INNER JOIN t t2 ON t1.id >= t2.id 
GROUP BY t1.id, 
     t1.unitprice 
ORDER BY t1.id 

Demo:

SQLFIDDLE DEMO

+0

-1, errato. Vuole sommare sequenzialmente le righe con lo stesso ** ID, non con ID consecutivi. – Matthew

Problemi correlati