我有以下信息,我想每天生成一份出勤报告。我会解释这个概念
EMP表
ID NAME
1哈桑
2侯赛因
3 Hameed
4克鲁兹
5菲利普
交易表
EmpID时间
1 5/8/2010 8:00 AM
2 5/8/2010 9:00 AM
3 5/8/2010 10:00 AM
我的出勤报告应如下所示
日期:2010年5月8日
ID NAME STATUS
1 Hassan Present
2侯赛因礼物
3 Hameed Present
4克鲁兹缺席
5 Philip Absent
我尝试了以下内容,
1.处理左外连接的链接,EMP.ID-> transcatio.EmpID
2.从转换表中按日期分组
如果是IsNull({transaction.EmpID}),则'缺席'否则'呈现'
但该报告仅显示那些在该日期进行交易的员工。 报告看起来像这样,
ID NAME STATUS
1 Hassan Present
2侯赛因礼物
3 Hammed礼物 它看来,左外连接不起作用。
提前感谢您提供任何帮助/建议。
答案 0 :(得分:0)
您是否查看了生成的实际SQL查询?转到数据库 - >显示SQL查询以查看它。不按日期使用组并查看显示的内容也可能会有所帮助。
答案 1 :(得分:0)
尝试使用相同的信息进行正确的外连接,这些信息会告诉您它是按照您想要的方向执行的。
您是否已将联接设置为强制执行? Stack Overflow Enforced Link Discussion
答案 2 :(得分:0)
当您想要在水晶报表中连接两个表时,使用左外连接,同时希望根据右表过滤报表,例如ORDER.ORDER_DATE> ='1-JAN-2014'联接将转换为equi join 解决一些人建议使用的问题 (ISNULL(ORDER.ORDER_DATE)或ORDER.RDER_DATE> ='1-JAN-2014')
上述解决方案仅适用于客户有0个订单且您仍想显示那些custer的情况,但如果某个客户的订单数超过0且订单日期为ON或者在'31 -DEC-2013'之前。在这种情况下,ISNULL(ORDER.ORDER_DATE)将无效。要解决此类问题,您需要添加命令对象或为订单表创建视图,如下所示
使用以下sql创建命令对象 选择Customer.customer_name,Order.Order_id,order.order_date 来自customer.customer_id = order.Customer_id和order.order_date> ='1-JAN-2014'
第二个解决方案是为订单创建一个视图 创建或替换视图view_orderrs为 从oders中选择*,其中order.order_dt> ='1-JAN-2014' 然后使用报表中的视图而不是订单表作为右表。