Domanda

Sto cercando di recuperare un enorme insieme di record da Teradata mediante JDBC. E ho bisogno di rompere questo set in parti per il quale sto usando "Top N" clausola select. Ma non so come impostare la "Offset" come come facciamo in MySQL -

   SELECT * FROM tbl LIMIT 5,10

in modo che la prossima istruzione select mi avrebbe recuperare i record da (N + 1) ° posizione.

È stato utile?

Soluzione

RANK e qualificare ho beleive sono i tuoi amici qui

per esempio

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

RANK (campo) sarà (concettualmente) recuperare tutte le righe del set di risultati, ordinarli dal ORDER BY campo e assegnare un ID rango incremento a loro.

QUALIFICARSI consente di slice che limitando le righe restituite per l'espressione di qualificazione, che ora può legalmente visualizzare i ranghi.

Per essere chiari, io sto tornando le righe 900-1000th nella query seleziona tutto da cusotmers, Non tornare i clienti con ID tra i 900 ei 1000.

Altri suggerimenti

È inoltre possibile utilizzare l'aggregato finestra ROW_NUMBER su Teradata.

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

A differenza delle finestre RANK aggregano, ROW_NUMBER vi fornirà una sequenza indipendentemente dal fatto che la colonna che si sta ordinando il set di partizioni opzionale è unica o meno.

Solo un'altra opzione da considerare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top