Ho un set di dati che contiene le colonne Date
, Cat
e QTY
. Quello che voglio fare è aggiungere una colonna univoca che conta solo i valori unici Cat
quando fa il conteggio delle righe. Questo è quello che voglio il mio risultato insieme a guardare come:row_number() Raggruppa per?
Utilizzando la query SQL di seguito, sono in grado di ottenere fila utilizzando la funzione row_number()
.
Tuttavia, non riesco a ottenere quella colonna univoca che ho raffigurato sopra. Quando aggiungo il gruppo alla clausola OVER
, non funziona. Qualcuno ha qualche idea su come posso far funzionare questa colonna di conteggi unica?
SELECT
Date,
ROW_NUMBER() OVER (PARTITION BY Date ORDER By Date, Cat) as ROW,
Cat,
Qty
FROM SOURCE
Grazie, questo è un passo nella giusta direzione. Tuttavia, il fatto è che il mio attuale set di dati non è ordinato da cat. Sai come funzionerebbe in quell'esempio? (Immagina che nella colonna del mio gatto, il DEF venga prima dell'ABC, ma è vero che i valori DEF sono tutti consecutivi nel mio ordine quindi non vedresti DEF, DEF, ABC, ABC, DEF come valori nella colonna cat) – user1582928
@ user1582928 As per http://msdn.microsoft.com/en-us/library/ms173825.aspx " Determina l'ordine in cui la funzione DENSE_RANK viene applicata alle righe in una partizione". E puoi sempre aggiungere ORDER BY alla fine di SELECT. –
prashanth
@ user1582928, se lo desideri puoi specificare una funzione per cambiare l'ordine, ad esempio: ordina per decodifica ('DEF', 1, 'ABC', 2,3) –