2014-02-21 66 views
0

我基本上具有如何订购一组,根据分组的汇总字段

  • 订购
    • 的OrderDetail 1
    • 的OrderDetail报告..
    • 的OrderDetailñ

这些详细信息可以包含零件和/或与其相关的劳动力成本。

目前,我分组根据OrderId,然后在报告的详细信息部分有OrderDetail信息。这工作完美。

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

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 

基本上,如果它应该基于劳动,然后按类型排序。 (该Sum({order.Labour}, {order.OrderId})款项劳动分组基础上的OrderID)

然而,当我去Group Expert和字段中添加组到我的公式,然后预览我的报告它旋转(我取消了一分钟后,预览)。如果我删除公式的Sum部分,那么它不到一秒钟。

有没有办法订购这份报告?

+0

LaborCost是'Order'的属性(与你的公式一样)还是'OrderDetail'? “Type”也是这样吗? – craig

+0

@craig,LabourCost是OrderDetail上的一个字段,但是,我创建了一个视图,它连接Order和OrderDetail,因此它只是一个OrderId和其他Order信息重复的表。 –

回答

1

我将如何来解决:

首先,创建一个sql-expresssion场计算劳动力总数为每个订单:

// {%TOTAL_LABOR} 
(
SELECT Sum(Labour) 
FROM OrderDetail 
WHERE OrderId=Order.OrderId 
) 

接下来,创建一个formula场:

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

最后,根据formula字段创建一个新组,确保它在订单组之前分组。如果需要,可以禁止组的页眉和页脚。

+0

我现在就给这个镜头,thx –

+1

如果你正在使用一个视图,效果会更好;您可以跳过'sql-expression'并将汇总内容作为标量值构建到'SELECT'子句中。 – craig