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();
我想使用 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();