Crystal reports 如何根据子组的摘要字段对组进行排序

Crystal reports 如何根据子组的摘要字段对组进行排序,crystal-reports,Crystal Reports,我有一份报告基本上 命令 订单详情1 订单详情 订单详细信息 这些详细信息可能包含与之相关的零件和/或人工成本 目前,我基于OrderId进行分组,然后在报告的详细信息部分提供OrderDetail信息。这很好用 但是,现在我需要根据整个订单的两个标准OrderType和LabourCost对订单进行分组。我已经整理了一个快速公式来确定顺序 if(Sum({order.Labour}, {order.OrderId})> 0) then if({order.type} = "t

我有一份报告基本上

  • 命令
    • 订单详情1
    • 订单详情
    • 订单详细信息
这些详细信息可能包含与之相关的零件和/或人工成本

目前,我基于
OrderId
进行分组,然后在报告的详细信息部分提供
OrderDetail
信息。这很好用

但是,现在我需要根据整个订单的两个标准
OrderType
LabourCost
对订单进行分组。我已经整理了一个快速公式来确定顺序

if(Sum({order.Labour}, {order.OrderId})> 0) then
  if({order.type} = "type1") then 1 else 2
else
  if({order.type} = "type1") then 3 else 4
基本上,如果应该根据劳动力分类,那么就应该根据类型分类。(求和({order.Labour},{order.OrderId})根据OrderId对人工分组求和)

但是,当我转到
Group Expert
并将Group by字段添加到我的公式中,然后预览我的报告时,它会旋转(我在一分钟后取消了预览)。如果我删除公式中的
Sum
部分,则所需时间不到一秒钟


是否有办法订购此报告?

我将如何处理:

首先,创建一个
sql expression
字段,用于计算每个订单的人工总数:

// {%TOTAL_LABOR}
(
SELECT Sum(Labour)
FROM   OrderDetail
WHERE  OrderId=Order.OrderId
)
接下来,创建一个
公式
字段:

// {@OrderGroup}
if({%TOTAL_LABOR}> 0) then
  if({order.type} = "type1") then 1 else 2
else
  if({order.type} = "type1") then 3 else 4

最后,根据
公式
字段创建一个新组,确保它在订单组之前分组。如果需要,您可以取消显示组的页眉和页脚。

人工成本
订单
(如公式中所示)还是
订单详细信息
Type
也是这样吗?@craig,LabourCost是OrderDetail上的一个字段,但是,我创建了一个视图,将Order和OrderDetail连接在一起,因此它只是一个重复了OrderId和其他订单信息的表。如果使用视图,效果会更好;您可以跳过
sql表达式
,将摘要作为标量值构建到
SELECT
子句中。