Eliminare record se la data è poco maggiore dalla precedente ( meno di...

sabato 20 giugno 2015 - 23.17
Tag Elenco Tags  Windows 7  |  SQL Server 2008 R2

renarig Profilo | Expert

Ho una tabella (SQLServer2012) che possiamo ridurre ai minimi termini in questo modo:
- Id - int ------ Key - Autoincrementale -
- DaOr - datetime - Not Null <------- (Questa è la data su cui valuto i duplicati)
- Note - varchar
- Eccetera

Devo eliminare i Duplicati dove intendo Duplicato il record
che abbia l'ora di registrazione (DaOr) poco maggiore rispetto
al record precedente ( 3600 secondi )

Detta diversamente Non voglio avere 2 o più record con DaOr troppo vicine
( meno di 3600 secondi ) perché in quel caso li considero duplicati
Io per comodita ho eliminato il secondo record, ma potrebbe essere anche il primo

Io avrei fatto un Cursore che scorre i record in ordine crescente di "DaOr"
e con un rigiro di OldDate e NewDate valuta la distanza dal record precedente
ed elimina se le condizioni lo richiedono.


a me sembra che funziona bene,
La domanda è: esistono metodi migliori ?????

Grazie

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

alx_81 Profilo | Guru

Ciao

>a me sembra che funziona bene,
>La domanda è: esistono metodi migliori ?????
se l'implementazione che hai dato soddisfa appieno i tuoi requisiti, di performance, di scrittura codice e sua leggibilità, ecc. direi che il problema non si pone.
Se però vuoi vedere un metodo che non sfrutti i cursori ed i cicli in SQL Server (che non è una strada ottimale, diciamo) potresti ragionare a set, così:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

> Grazie
di nulla!
Alessandro Alpi | SQL Server MVP | Engage IT Services s.r.l.
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com

renarig Profilo | Expert

>Se però vuoi vedere un metodo che non sfrutti i cursori ed i
>cicli in SQL Server (che non è una strada ottimale, diciamo)
>potresti ragionare a set, così:


Grazie Alex :)
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