使用Bql获取top(N)或单个值

时间:2017-07-07 10:24:35

标签: acumatica

如何使用PXSelect语句以便检索特定DAC的Top(N)或第一个值。

假设我有一个带有序列号的表,我想获得序列号最大的记录。我怎么能这样做?

当然,出于性能原因,我希望SQL只发送1条记录。

1 个答案:

答案 0 :(得分:3)

您可以使用SelectWindowed代替PXSelect上的选择来获取前N个记录。在下面的示例中,它将获得前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
}