martedì 12 febbraio 2013

Cancellare record duplicati oracle

DELETE FROM TABELLA1
WHERE ROWID NOT IN
(
    SELECT MIN(ROWID)
    FROM TABELLA1
    GROUP BY CAMPO1
)

lunedì 11 febbraio 2013

Select Top 1 in Oracle

L'esempio seguente restituisce un solo valore della tabella Table1 con data più recente:

SELECT Campo1
FROM (
    SELECT Campo1,  RANK() OVER (ORDER BY DATA_ORA DESC) sal_rank
    FROM table1
    WHERE table1.id = :id
)
WHERE sal_rank = 1


mentre per far restituire gli ultimi 3 basta sostituire l'ultima riga con la seguente:

WHERE sal_rank <= 3