2017-07-07 1 views
0

PXSelectステートメントを使用して、特定のDACの先頭(N)または最初の値を取得する方法をどのように使用することができますか?Bqlを使用してトップ(N)または単一の値を取得

シーケンス番号を持つテーブルがあり、最大のシーケンス番号を持つレコードを取得したいとします。どうやってやるの?

もちろん、パフォーマンス上の理由から、SQLは1レコードしか送信しません。

答えて

3

トップNレコードを取得するには、PXSelectのSelectの代わりにSelectWindowedを使用できます。下の例では、Top 1を取得します。totalRowsの値を1から5に変更した場合は、上位5を取得します(PXResultSetを取得して5つのレコードすべてを使用する必要がある場合を除く)。

トップ1例:

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

トップ5例:

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

値が5に設定されている場合、このようなケースでは5番目のレコードを返していますか? –

+0

@Petrosovこの関数のパラメータは、文書化されています。 // startRow: //取得する最初のデータレコードの0から始まるインデックス。 // // totalRows: //取得するデータレコードの数。 –

+0

はい、結果に合計5行が返されます。開始行の値を変更すると、SQLで使用される先頭の値が変更され、開始行が1で全行が5であれば、SQLクエリが上位6になり、結果では2行目から6行目が返されます。 – Brendan

関連する問題