PDA

View Full Version : [sql server 2008]sum senza un group by


RaouL_BennetH
29-11-2012, 00:49
.... è possibile ?

ho una semplice tabella:


id, descrizione, prezzo, qta


avrei semplicemente bisogno di fare:


select id, descrizione, sum(prezzo * qta), sum(qta) from tabella


Direte voi: perchè non usare il group by ?

perchè (e non ho capito perchè...)
mi restituisce poi il tutto ordinando per "descrizione"
mentre invece ho bisogno di visualizzare i dati nell'ordine in cui sono stati inseriti.

Grazie.

WarDuck
30-11-2012, 09:48
Usare order-by Id?

Se Id è progressivo ottieni il risultato voluto.

Ciao.

thememphis
11-12-2012, 12:48
Non ha senso logico la tua richiesta, perchè la SUM fa la somma di un insieme di tuple determinato dalla condizione di raggruppamento, quindi senza raggruppamento non può sommare nulla.
Per esempio con Group by descrizione ti darebbe la somma dei prezzi*qta con la stessa descrizione.
Se invece per ogni tupla vuoi ottenere una colonna con prezzo*qta basterebbe usare (prezzo*qta) as przqta .

Ciao
Davide

RaouL_BennetH
12-12-2012, 00:02
Usare order-by Id?

Se Id è progressivo ottieni il risultato voluto.

Ciao.

Ciao :) ho letto solo ora....

ad ogni modo no, l'id non è progressivo nè numerico.
Ho fatto un piccolo strappo alla regola e mi sono fatto aiutare da 'linq' ...

zanardi84
12-12-2012, 20:32
.... è possibile ?

ho una semplice tabella:


id, descrizione, prezzo, qta


avrei semplicemente bisogno di fare:


select id, descrizione, sum(prezzo * qta), sum(qta) from tabella


Direte voi: perchè non usare il group by ?

perchè (e non ho capito perchè...)
mi restituisce poi il tutto ordinando per "descrizione"
mentre invece ho bisogno di visualizzare i dati nell'ordine in cui sono stati inseriti.

Grazie.

Mhh, strana sta cosa...
partendo dal presupposto secondo cui nel modello relazionale NON importa l'ordine delle tuple per dare un senso alla tabella, generalmente non viene impostato un ordine diverso da quello dell'inserimento se non gli viene ordinato un order by..
Un eventuale ordine, ma tuo per esigenza, potrebbe essere quello derivato dall'impostazione della chiave primaria progressiva autoincrementale per cui ad ogni inserimento viene automaticamente incrementato il contatore che poi ti assegna il valore di chiave.

Che sia magari qualche impostazione del dbms secondo cui opera determinati ordinamenti invece di lasciare la tabella come l'hai inserita?