0

我正在构建一个计算订单处理时间的报告,但我们希望从报告中排除所有包含特定项目的订单。有什么想法可以做到这一点吗?

数据库的(相关部分)非常简单。

  • 包含订单 ID、客户 ID、下订单时间、订单发货时间等的订单表。
  • 有项目的表。
  • 链接订单表和项目表的表。(订单项)

链接订单和订单项,然后排除特定项目仍然计算和处理包含该项目的订单,所以我必须找出一种基于 order_id 排除的方法。

使用 SQL,我可以通过一个简单的查询获得要排除的订单列表:

SELECT DISTINCT order_id FROM orderitems WHERE item_id = 'Excluded item ID'

但是如何在 Crystal Reports 中使用此记录选择?我尝试将其作为 SQL 命令输入,并将其与其余报告表取消链接,然后在记录选择中使用

not ({orders.order_id} in [{ordersToBeExcluded.order_id}])

但这并没有给出正确的结果。

4

2 回答 2

1

一些选项浮现在脑海中 - 按优先顺序排列:

  1. 在 SQL 中完成工作。使用视图向 Crystal 显示已排除的订单的数据

  2. 使用子查询创建一个 sql 表达式,例如isnull((select top 1 1 from orderitems where orderid = X and orderitemid = Y),0). 然后在您的选择标准中使用它and sqlexpression = 0

  3. 使用组选择专家来抑制 count({specialitem},{group}) > 0 的组

  4. 使用仅在 count({specialitem},{group}) > 0 时计算的运行总计

于 2012-11-29T10:09:48.247 回答
0

您还可以使用排除 (!=) 进行完全外部联接,或尝试使用 {orders.orders_id}<>{ordersToBeExcluded.orders_id} 进行报告过滤器(报告 --> 选择公式 --> 记录)

于 2012-11-30T13:30:31.840 回答