Sto cercando di individuare il metodo ottimizzato per suddividere righe alternative di una colonna in due colonne. Mi spiego con un esempioDistribuisci i dati in due colonne
ho i seguenti dati
Resultset voglio
nell'esempio di cui sopra, la riga alternativa è spostato su una nuova colonna. Ho trovato una soluzione ma non è ottimizzata d se ho milioni di record.
mia soluzione (non ottimizzata)
;WITH RecCtea
AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY (select 1)) rowid FROM tabA ta
)
SELECT a.cola,b.cola FROM (
(SELECT * FROM RecCtea rc WHERE rc.rowid%2 = 0) a JOIN
(SELECT * from RecCtea rc2 where rc2.rowid%2 != 0) b
on a.rowid = b.rowid+1
)
SQLfiddle non funziona: ecco lo schema
CREATE TABLE tabA ( cola int ); INSERT tabA ( cola ) VALUES (100),(-100),(200),(-250),(300),(-350),(-400),(NULL)
Sta dicendo il valore alternativa è sempre un numero negativo? E/o sempre inserito dopo il suo genitore? O che c'è una consistenza nel valore ABSOLUTE aumentato della colonna? O solo un esempio e postuli usando ROW_NUMBER() per risolverlo –
@clifton_h no, potrebbe essere un valore positivo o negativo. Voglio solo il numero di riga 1,3,5,7 ... in una colonna e 2,4,6,8 ... in un altro –
Quindi non c'è alcuna preoccupazione per l'ordine di pronunciare Col_Odd e Col_Even? –