Acumatica 5.1 和 5.2 中的 PXSelectGroupBy 和 Bit 值
在 Acumatica Framework 5.2 中,BQL PXSelectGroupBy<>
数据视图的 SQL 生成方法已经改变。
以下部分使用 PXSelectGroupBy<FinYear, Aggregate<GroupBy<FinYear.finPeriods>>>.Select(graph)
的示例说明了不同之处:
Acumatica Framework 5.2 及更高版本
SELECT Max([finyear].[year]),
Max([finyear].[startdate]),
Max([finyear].[enddate]),
[finyear].[finperiods],
-- Attention!
CONVERT (BIT, Max([finyear].[customperiods] + 0)),
--
Max([finyear].[begfinyearhist]),
Max([finyear].[periodsstartdatehist]),
Max([finyear].[noteid]),
( NULL ),
( NULL ),
( NULL ),
Max([finyear].[tstamp]),
Max([finyear].[createdbyid]),
Max([finyear].[createdbyscreenid]),
Max([finyear].[createddatetime]),
Max([finyear].[lastmodifiedbyid]),
Max([finyear].[lastmodifiedbyscreenid]),
Max([finyear].[lastmodifieddatetime])
FROM finyear FinYear
WHERE ( finyear.companyid = 2 )
GROUP BY [finyear].[finperiods]
ORDER BY Max([finyear].[year])
Acumatica Framework 5.1 及早期版本
SELECT Max([finyear].[year]),
Max([finyear].[startdate]),
Max([finyear].[enddate]),
[finyear].[finperiods],
-- Attention!
( NULL ),
--
Max([finyear].[begfinyearhist]),
Max([finyear].[periodsstartdatehist]),
( NULL ),
( NULL ),
( NULL ),
Max([finyear].[tstamp]),
( NULL ),
Max([finyear].[createdbyscreenid]),
Max([finyear].[createddatetime]),
( NULL ),
Max([finyear].[lastmodifiedbyscreenid]),
Max([finyear].[lastmodifieddatetime])
FROM finyear FinYear
WHERE ( finyear.companyid = 2 )
GROUP BY [finyear].[finperiods]
ORDER BY Max([finyear].[year])
说明
默认情况下,Max()
聚合应用于 BQL 语句中未明确提及的所有字段。
但是,在 Acumatica 5.1 及更早版本中,它排除了 CreatedByID
,LastModifiedByID
和 bool
字段。当转换为 SQL 时,除非你明确分组,否则这些字段将始终为 null
。
从版本 5.2 开始,默认情况下也将为他们应用 Max()
。