Acumatica 针灸BQL组
如何转换此SQL查询:Acumatica 针灸BQL组,acumatica,Acumatica,如何转换此SQL查询: SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value 对于Acumatica BQL?我相信BQL中还没有可用的功能 我解决这个问题的方法是使用投影来生成子查询。例如: [Se
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
对于Acumatica BQL?我相信BQL中还没有可用的功能 我解决这个问题的方法是使用投影来生成子查询。例如:
[Serializable]
[PXProjection(typeof(
Select4<Table,
Aggregate<
GroupBy<Table.column1,
Sum<Table.column2>>>>))]
public class AggregateTable : IBqlTable
{
// This will contain aggregate value - GroupBy
public abstract class column1: PX.Data.IBqlField
{
}
[PXDBString(BqlField = typeof(Table.column1))]
[PXUIField(DisplayName = "Column1")]
public virtual string Column1 { get; set; }
// This will contain aggregate value - Sum
public abstract class column2: PX.Data.IBqlField
{
}
[PXDBInt(BqlField = typeof(Table.column2))]
[PXUIField(DisplayName = "Column2")]
public virtual int? Column2 { get; set; }
}
[可序列化]
[PX投影(类型)(
选择4>)]
公共类聚合表:IBqlTable
{
//这将包含聚合值-GroupBy
公共抽象类column1:PX.Data.IBqlField
{
}
[PXDBString(BqlField=typeof(Table.column1))]
[PXUIField(DisplayName=“Column1”)]
公共虚拟字符串Column1{get;set;}
//这将包含聚合值-总和
公共抽象类column2:PX.Data.IBqlField
{
}
[PXDBInt(BqlField=typeof(Table.column2))]
[PXUIField(DisplayName=“Column2”)]
公共虚拟int?Column2{get;set;}
}
然后,您可以使用普通选择过滤聚合:
public PXSelect<AggregateTable, Where<AggregateTable.column2, Equal<Required<AggregateTable.column2>>>> FilteredTable;
var rows = FilteredTable.Select(10);
public px选择FilteredTable;
变量行=FilteredTable。选择(10);
我尽量少用它,因为如果你不小心的话,它会变得一团糟。我相信Bql中还没有可用的函数 我解决这个问题的方法是使用投影来生成子查询。例如:
[Serializable]
[PXProjection(typeof(
Select4<Table,
Aggregate<
GroupBy<Table.column1,
Sum<Table.column2>>>>))]
public class AggregateTable : IBqlTable
{
// This will contain aggregate value - GroupBy
public abstract class column1: PX.Data.IBqlField
{
}
[PXDBString(BqlField = typeof(Table.column1))]
[PXUIField(DisplayName = "Column1")]
public virtual string Column1 { get; set; }
// This will contain aggregate value - Sum
public abstract class column2: PX.Data.IBqlField
{
}
[PXDBInt(BqlField = typeof(Table.column2))]
[PXUIField(DisplayName = "Column2")]
public virtual int? Column2 { get; set; }
}
[可序列化]
[PX投影(类型)(
选择4>)]
公共类聚合表:IBqlTable
{
//这将包含聚合值-GroupBy
公共抽象类column1:PX.Data.IBqlField
{
}
[PXDBString(BqlField=typeof(Table.column1))]
[PXUIField(DisplayName=“Column1”)]
公共虚拟字符串Column1{get;set;}
//这将包含聚合值-总和
公共抽象类column2:PX.Data.IBqlField
{
}
[PXDBInt(BqlField=typeof(Table.column2))]
[PXUIField(DisplayName=“Column2”)]
公共虚拟int?Column2{get;set;}
}
然后,您可以使用普通选择过滤聚合:
public PXSelect<AggregateTable, Where<AggregateTable.column2, Equal<Required<AggregateTable.column2>>>> FilteredTable;
var rows = FilteredTable.Select(10);
public px选择FilteredTable;
变量行=FilteredTable。选择(10);
我尽量少用它,因为如果你不小心的话,它会变得一团糟。在FBQL中。下面是已实现的AggregateTo和OrderBy部分的示例:
.AggregateTo<Sum<field1>, GroupBy<field2>, Max<field3>,
Min<field4>, Avg<field5>, Count<field6>>.
Having<field5.Averaged.IsGreater<Zero>>
.OrderBy<field1.Asc, field2.Desc, field3.Asc>
.AggregateTo。
有
.OrderBy
在FBQL中出现。下面是已实现的AggregateTo和OrderBy部分的示例:
.AggregateTo<Sum<field1>, GroupBy<field2>, Max<field3>,
Min<field4>, Avg<field5>, Count<field6>>.
Having<field5.Averaged.IsGreater<Zero>>
.OrderBy<field1.Asc, field2.Desc, field3.Asc>
.AggregateTo。
有
.OrderBy
Hi@vannak,这个答案有用吗?Hi@vannak,已经有一段时间了,但是如果你觉得这个答案有用,你能接受它是有效的吗?谢谢。嗨@vannak,这个答案有用吗?嗨@vannak,已经有一段时间了,但是如果你觉得这个答案有用,你能接受它是有效的吗?非常感谢。