Differenza rispetto al record precedente

martedì 07 settembre 2010 - 17.15
Tag Elenco Tags  SQL Server 2005

gsistemi Profilo | Junior Member

CIAO,

esiste la possibilità con una query di fare quanto segue:

ho questa query che mi genera una classifica

A - 10 punti
B - 8 punti
C - 4 punti

vorrei un'altra colonna con la differenza che c'è tra il record corrente e il record precedente, quindi il risultato della query dovrebbe essere:

A - 10 punti - 0
B - 8 punti - 2 (10 - 8)
C - 4 punti - 4 (8 - 4)

Ultima cosa, il totale dei punti viene calcolato da un altra tabella, non ho la tabella classifica con nome e totale punti e la query dovrebbe ordinare per numero di punti.

Grazie!
Giulio

TomClancy Profilo | Junior Member

Personalmente farei un cursore... però magari aspettiamo la risposta di qualche guru che non si sa mai.

alx_81 Profilo | Guru

>CIAO,
Ciao

>vorrei un'altra colonna con la differenza che c'è tra il record
>corrente e il record precedente, quindi il risultato della query
>dovrebbe essere:
>Ultima cosa, il totale dei punti viene calcolato da un altra
>tabella, non ho la tabella classifica con nome e totale punti
>e la query dovrebbe ordinare per numero di punti.
Non sapendo come sono fatte le tue tabelle, ti faccio l'esempio con una tabella classifica coi punti integrati, si tratta di sostituire la mia tabella con una subquery contenente la tua query (quella che ti ricava i punti, diciamo). Comunque ecco l'esempio:

USE tempdb; GO CREATE TABLE #Classifica ( Squadra varchar(30) NOT NULL , Punti smallint , CONSTRAINT PK_dboClassifica PRIMARY KEY CLUSTERED ( Squadra ) ) GO INSERT INTO #Classifica VALUES ('Inter', 10) INSERT INTO #Classifica VALUES ('Milan', 8) INSERT INTO #Classifica VALUES ('Roma', 5) INSERT INTO #Classifica VALUES ('Juve', 4) INSERT INTO #Classifica VALUES ('Lazio', 0) GO ;WITH ClassificaOrdinata AS ( SELECT Squadra , Punti , progressivo = ROW_NUMBER() OVER (ORDER BY Punti DESC) FROM #Classifica ) SELECT CO1.Squadra , CO1.Punti , Differenza = COALESCE(CO2.Punti - CO1.Punti, 0) FROM ClassificaOrdinata CO1 LEFT JOIN ClassificaOrdinata CO2 ON CO1.progressivo - 1 = CO2.progressivo -- pulizia DROP TABLE #Classifica GO

>Grazie!
di nulla!

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5