0

我有以下信息,我想每天生成一份出勤报告。我将解释这个概念

EMP 表 ID 名称
1 哈桑

2 侯赛因

3 哈米德

4 克鲁兹

5菲利普

交易表

EmpID时间

1 2010 年 5 月 8 日上午 8:00

2 2010 年 5 月 8 日上午 9:00

3 2010 年 5 月 8 日上午 10:00

我的出勤报告应该是这样的

日期:2010 年 5 月 8 日

ID 名称 状态

1 哈桑礼物

2 侯赛因礼物

3 哈米德礼物

4克鲁兹缺席

5菲利普缺席

我尝试了以下,

1.用左外连接创建一个链接,EMP.ID->transcatio.EmpID

2.从交易表中按日期分组

  1. 为状态创建了一个公式,看起来像这样

如果 IsNull({transaction.EmpID}) 则“缺席”否则“存在”

但该报告仅显示那些在该日期进行交易的员工。报告长这样

ID 名称 状态

1 哈桑礼物

2 侯赛因礼物

3 Hammed Present 看来,左外连接不起作用。

提前感谢您提供的任何帮助/建议。

4

3 回答 3

0

当您想在水晶报表中加入两个表并使用左连接同时想要根据右表过滤报表时,例如 ORDER.ORDER_DATE>='1-JAN-2014' 连接将转换为等连接来解决有些人建议使用的问题 (ISNULL(ORDER.ORDER_DATE) OR ORDER.RDER_DATE>='1-JAN-2014')

上述解决方案仅在客户有 0 个订单并且您仍想显示这些客户但如果某些客户有超过 0 个订单并且订单日期为 ON 或“2013 年 12 月 31 日”之前怎么办。在这种情况下 ISNULL(ORDER.ORDER_DATE) 将不起作用。要解决此类问题,您需要添加命令对象或为订单表创建视图,如下所示

  1. 使用以下 sql 创建命令对象 选择 Customer.customer_name,Order.Order_id, order.order_date from customer left outer join order on customer.customer_id=order.Customer_id and order.order_date>='1-JAN-2014'

  2. 第二种解决方案是为订单创建一个视图,创建或替换视图 view_orderrs 为 Select * from oders where order.order_dt>='1-JAN-2014' 然后使用报表中的视图而不是订单表作为右表。

于 2015-02-05T14:53:10.770 回答
0

您是否查看了生成的实际 SQL 查询?转到数据库-> 显示 SQL 查询以查看它。不使用按日期分组并查看显示的内容也可能会有所帮助。

于 2011-09-06T14:20:40.617 回答
0

尝试使用与您想要的相反方向进行的相同信息的右外连接。

您是否将加入设置为强制执行? 堆栈溢出强制链接讨论

于 2013-10-04T16:08:14.940 回答