Acumatica 的 BQL 中有没有办法在单个字段上执行 select 不同的查询?

Is there a way in Acumatica's BQL to perform select distinct query on a single field?

我想使用 BQL 从 SOLine(连接到 BCSyncDetails table/DAC)中获取记录集,该记录集仅包含不同的 orderNbr 值。我试过使用 PXSelectJoinGroupBy 方法:

var solines = PXSelectJoinGroupBy<SOLine, 
              InnerJoin<BCSyncDetail, 
                  On<SOLine.noteID, Equal<BCSyncDetail.localID>>>,
              Aggregate<GroupBy<SOLine.orderNbr, Max<SOLine.orderNbr>>>>.Select(Base);

本质上就是这个 SQL 查询:

    SELECT  
    DISTINCT OrderNbr
    FROM     SOLine 
             INNER JOIN BCSyncDetail
                 ON SOLine.NoteID = BCSyncDetail.LocalID
                 AND SOLine.CompanyID = BCSyncDetail.CompanyID
    ORDER
    BY       OrderNbr

我是不是写错了?在任何地方都找不到很好的例子...

我的建议是像这样重写您的查询

var solines = PXSelectJoinGroupBy<SOLine, InnerJoin<BCSyncDetail, On<SOLine.noteID, Equal<BCSyncDetail.localID>>>, Aggregate<GroupBy<SOLine.orderNbr, Max<SOLine.orderNbr>>>>.Select(Base).RowCast<SOLine>().ToList();

因此您可以对本地对象使用 LINQ 查询。一旦你在枚举中拥有它,就会更快、更容易、更强大。上面的 RowCast 命令是关键,让我的生活更轻松。

var distinctSOLines= solines.Select(x=>x.OrderNbr).Distinct();