2011-09-05 33 views
6

Estoy tratando de obtener un gran conjunto de registros de Teradata usando JDBC. Y necesito dividir este conjunto en partes para las que estoy usando la cláusula "N Top" en select. pero no sé cómo configurar el "offset" como la forma en que hacemos en MySQL -Teradata: limitando los resultados usando TOP

SELECT * FROM tbl LIMIT 5,10 

para que la próxima instrucción de selección me iría a buscar los registros de (N + 1) -ésima posición.

Respuesta

5

RANK y calificar que creo son sus amigos aquí

por ejemplo

SEL RANK(custID), custID 
FROM mydatabase.tblcustomer 
QUALIFY RANK(custID) < 1000 AND RANK(custID) > 900 
ORDER BY custID; 

RANK (campo) será (conceptualmente) recuperar todas las filas del conjunto de resultados, para ellos por el ORDER BY campo y asignarles una identificación de rango creciente.

QUALIFY le permite cortar eso al limitar las filas devueltas a la expresión de calificación, que ahora puede ver legalmente los RANK.

Para que quede claro, yo estoy devolviendo las filas 900-1000th en la consulta selecciona todos de cusotmers, no devolver a los clientes con los ID de entre 900 y 1000.

+0

gracias. Esto es lo que estaba buscando. – Aanand

+0

Sugiero usar la versión agregada de ventana de 'RANK ({columna})' en adelante. RANK, como se muestra en esta respuesta, ha quedado obsoleto desde Teradata 12. 'RANK() OVER (ORDER BY custID) AS Rank_' y luego' QUALIFY on Rank_ ENTRE 900 Y 1000'. Si incluye la cláusula 'PARTITION BY' (opcional), puede restablecer la clasificación cuando cambie el conjunto de columnas de partición. Tenga en cuenta que si la columna que está ordenando no es única, RANK no le proporcionará una secuencia pura. –

5

También puede utilizar el agregado ROW_NUMBER ventana en Teradata.

SELECT ROW_NUMBER() OVER (ORDER BY custID) AS RowNum_ 
    , custID 
    FROM myDatabase.myCustomers 
QUALIFY RowNum_ BETWEEN 900 and 1000; 

A diferencia del agregado RANK ventanas, ROW_NUMBER le proporcionará una secuencia independientemente de si la columna que está pidiendo sobre el conjunto de particiones opcional es único o no.

Simplemente otra opción a considerar.

Cuestiones relacionadas