SAP Crystal报告了如何联接,链接表,以便不会丢失输出。

2020-09-02 14:33发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大师们,

我有4张桌子。

1。 员工(包含查询信息)的字段员工编号(文本),员工姓名,column1(number)(这是员工* 1,使其成为数字字段)

2。 带有工作订单编号,工作名称字段的工作订单(包含查找信息)

3。 预算时间(包含数据),其中包含工作编号,工作名称,员工编号(数字),员工姓名,预算时间

4。 带有工作编号,工作名称,员工编号(编号),员工姓名,预订时间的字段的预订时间(包含数据)

我希望输出具有基于工单号的两个数据表中的所有数据。 如果某人有预算时间,但没有预订时间。 它需要显示。 如果某人预订了小时,但没有预算小时,则需要显示。

这是一个子报表。 选择参数是显示在主报表字段中的工作单编号。

他在雇员编号中输入一个文本字段,因此将其转换为另一列,因此我可以将其链接到数据表中的其他字段。

我连接了

-column1。具有员工编号的员工。预算时间

-列1。具有员工编号的员工。预订时间

-工单号。带工单的工单。预算时间

-工单号。带工单的工单。预订小时数

问题:输出为在工作单上预订了小时的员工提供行,然后为预算的小时显示0,但反之则不行! 那就是问题!! 我无法让CR为预算时间却没有预订时间的员工显示一行。

如果我去联系专家。 我只能使用内部联接。 如果我确实使用了左外部联接或右外部联接,则会收到一条消息,提示从数据库检索数据失败。 完整的外部连接显示为灰色。

一开始,我只有两个数据表相互连接,但输出问题相同。 但是在学习了一些Microsoft Power BI之后,他们向我解释了从查找表进行筛选的重要性。 我认为规范化将成为解决方案。 但是仍然没有结果。 我在做什么错? 在有2个数据表的情况下,我可以使用左右外部联接。 但是只有输出中的顺序会更改,没有多余的行。 完全外部连接仍然显示为灰色。

希望有人可以帮忙,我的解释很清楚。

预先感谢

Raymond

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大师们,

我有4张桌子。

1。 员工(包含查询信息)的字段员工编号(文本),员工姓名,column1(number)(这是员工* 1,使其成为数字字段)

2。 带有工作订单编号,工作名称字段的工作订单(包含查找信息)

3。 预算时间(包含数据),其中包含工作编号,工作名称,员工编号(数字),员工姓名,预算时间

4。 带有工作编号,工作名称,员工编号(编号),员工姓名,预订时间的字段的预订时间(包含数据)

我希望输出具有基于工单号的两个数据表中的所有数据。 如果某人有预算时间,但没有预订时间。 它需要显示。 如果某人预订了小时,但没有预算小时,则需要显示。

这是一个子报表。 选择参数是显示在主报表字段中的工作单编号。

他在雇员编号中输入一个文本字段,因此将其转换为另一列,因此我可以将其链接到数据表中的其他字段。

我连接了

-column1。具有员工编号的员工。预算时间

-列1。具有员工编号的员工。预订时间

-工单号。带工单的工单。预算时间

-工单号。带工单的工单。预订小时数

问题:输出为在工作单上预订了小时的员工提供行,然后为预算的小时显示0,但反之则不行! 那就是问题!! 我无法让CR为预算时间却没有预订时间的员工显示一行。

如果我去联系专家。 我只能使用内部联接。 如果我确实使用了左外部联接或右外部联接,则会收到一条消息,提示从数据库检索数据失败。 完整的外部连接显示为灰色。

一开始,我只有两个数据表相互连接,但输出问题相同。 但是在学习了一些Microsoft Power BI之后,他们向我解释了从查找表进行筛选的重要性。 我认为规范化将成为解决方案。 但是仍然没有结果。 我在做什么错? 在有2个数据表的情况下,我可以使用左右外部联接。 但是只有输出中的顺序会更改,没有多余的行。 完全外部连接仍然显示为灰色。

希望有人可以帮忙,我的解释很清楚。

预先感谢

Raymond

付费偷看设置
发送
1条回答
compass1988
1楼-- · 2020-09-02 14:48

嗨Raymond,

如果您无法使用外部联接,通常表明您使用的是旧的或不受支持的数据库驱动程序。

由于您提到了Power BI ,我假设您正在连接到MS SQL Server数据库? 如果是,请确保您使用的是最新的SQL Server Native Client驱动程序。

使用自定义SQL查询更容易处理; 外观如下:

选择
 E.EmpName,
 W.WorkOrder#,
 预算时间,
 Bo.Bookedhours
 从
 #Workorders W
 左联接#已预算Bd ON W.WorkOrder#= Bd.WorkOrder#
 左联接#已预订Bo ON W.WorkOrder#= Bo.WorkOrder#
 左联接#Employees E ON E.Emp#= COALESCE(Bd.Emp#,Bo.Emp#)

如果您希望通过手动设置联接来在CR中处理此问题,则必须 做这样的事情:

工作单左上班工作时的预算小时数

工作单左上班工作时的预定小时数

预算小时数左上班的员工上Emp#

此时,插入一个雇员表的副本(CR将在表名的末尾添加一个下划线)

从预订时间向新雇员表的LEFT JOIN ON Emp#

在报告中,使用以下代码创建一个公式:

 IF isNull(Employee.EmpName)OR Employee.EmpName =''然后
 Employee_1.EmpName//这是另一个Employee表中的Emp Name字段
 其他
 Employee.EmpName 

-阿比拉什

一周热门 更多>