2012-12-20 12 views
5

mi hanno un set di risultati SQL che è simile a questo, e ordinate per STYLE:Select Top n righe

STYLE  |  CUSTOMER  |  SIZE  |  COLOUR  | 
----------------------------------------------------------------- 
A    DWTG    S    BLUE 
B    DWTG    S    RED 
C    DWTG    S    GREEN 
C    DWTG    M    GREEN 
D    DWTG    S    ORANGE 
D    DWTG    M    ORANGE 
D    DWTG    L    ORANGE 

Ora, ho bisogno di dividere questo risultato impostare e ottenere le prime 1000 righe. Nessun problema, posso usare TOP 1000.

mio problema è, con l'esempio precedente, se volevo, dire le prime 3 righe, perché STYLE ha C ripetuta alla riga successiva, devo includere anche questo (così avrei effettivamente 4 file).

esempio di cui sopra, vorrei il set di risultati a guardare come:

STYLE  |  CUSTOMER  |  SIZE  |  COLOUR  | 
----------------------------------------------------------------- 
A    DWTG    S    BLUE 
B    DWTG    S    RED 
C    DWTG    S    GREEN 
C    DWTG    M    GREEN 

Questo è avvenuto perché un ERP stiamo importando dati in ha un limite di dimensione del file, quindi ho bisogno di dividere il mio set di risultati in file più piccoli, ma ho bisogno di mantenere gli stessi record (lo stesso valore in STYLE) insieme.

Stavo pensando ad una sorta di funzione di finestra che aggiunge dinamicamente un numero allo TOP n in base a se la riga successiva ha lo stesso stile.

Qualche idea?

+0

si può mostrare un esempio di ciò che si vuole l'output di essere? – JohnFx

risposta

10

Sembra che si desidera che questo:

select top 3 with ties * 
from yourtable 
order by style 

Vedere SQL Fiddle with Demo

Modifica # 1: Vedere una versione aggiornata sql fiddle with your additional data

Risultato:

| STYLE | CUSTOMER | SIZE | COLOUR | 
------------------------------------ 
|  A |  DWTG | S | BLUE | 
|  B |  DWTG | S | RED | 
|  C |  DWTG | S | GREEN | 
|  C |  DWTG | M | GREEN | 
+0

Basta avere una lettura su questo, ma sembra che questo potrebbe funzionare. Il mio output ha circa 20 colonne, come posso specificare usando 'with tie 'quale colonna voglio che mantenga insieme? – Lock

+0

@Lock Userà qualsiasi colonna che ordini per legare insieme le righe, in questo caso solo 'stile'. –

+1

@Lock puoi aggiungere un paio delle altre colonne alla tua domanda, in modo che nessuno stia inseguendo un bersaglio mobile? –

Problemi correlati