2017-07-07 2 views
0

Wie ist es möglich, eine PXSelect-Anweisung zu verwenden, damit es den Top (N) oder den ersten Wert für einen bestimmten DAC abruft.Get top (N) oder Einzelwert mit Bql

Nehmen wir an, ich habe eine Tabelle mit einer Sequenznummer, und ich möchte den Datensatz mit der größten Sequenznummer erhalten. Wie kann ich das machen?

Natürlich möchte ich, dass aus Leistungsgründen SQL nur 1 Datensatz sendet.

Antwort

3

Sie können SelectWindowed anstelle von Select auf Ihrer PXSelect verwenden, um die oberen N Datensätze zu erhalten. Im Beispiel unten erhält es die Top 1. Wenn Sie den Wert totalRows Wert von 1 bis 5 ändern, würde es die Top 5 erhalten (außer Sie müssten die PXResultSet Schleife oder erhalten Sie alle 5 Datensätze abrufen.)

Top 1 Beispiel:

DiscountSequence firstRow = PXSelect<DiscountSequence, 
    Where<DiscountSequence.discountID, Equal<Required<DiscountSequence.discountID>>> 
     >.SelectWindowed(this, 0, 1, someDiscountID); 

Top 5 Beispiel:

foreach (DiscountSequence row in PXSelect<DiscountSequence, 
    Where<DiscountSequence.discountID, Equal<Required<DiscountSequence.discountID>>> 
     >.SelectWindowed(this, 0, 5, someDiscountID)) 
{ 
    //5 rows returned 
} 
+0

dies die fünfte Datensatz im Fall zurückkehrt, wenn der Wert auf 5 gesetzt ist? –

+0

@Petrosov Diese Funktionsparameter sind dokumentiert: // startRow: // Der 0-basierte Index des ersten abzurufenden Datensatzes. // // totalRows: // Die Anzahl der abzurufenden Datensätze. –

+0

ja es sollte insgesamt 5 Reihen in den Ergebnissen zurückgeben. Durch Ändern des Startzeilenwerts wird der in SQL verwendete oberste Wert geändert. Wenn Sie beispielsweise nach einer Startzeile von 1 mit insgesamt 5 Zeilen fragen, erhalten Sie eine SQL-Abfrage von Top 6 mit einer Rückgabe der 2. bis 6. Zeile in den Ergebnissen. – Brendan