1

我有一个要报告的数据集。但是,有些数据是重复的,有些不是:

ID   Project   Org   Type   Facility   AssessorManager   Assessor 
123   Proj1    Org1  Ty1    Facil1     Smith              Jones    
123   Proj1    Org2  Ty1    Facil2     Smith              Black 
123   Proj1    Org2  Ty1    Facil3     Smith              Black 
234   Proj1    Org3  Ty2    Facil3     Harris             Jones 
234   Proj1    Org1  Ty2    Facil3     Harris             Jones 
393   Proj2    Org2  Ty3    Facil1     Smith              Black 

因此,对于一个 ID,与 Project、Type 和 AssessorManager 是 1:1 的关系;以及与 Org、Facility 和 Assessor 的 1:N 关系。

我想要一份不会重复的报告,并且已经报告了 1:1 数据,然后是每个 1:N 数据集的存储过程。我得到如下结果,但它是狗慢。

ID   Project   Org   Type   Facility   AssessorManager   Assessor 
123  Proj1     Org1  Ty1    Facil1     Smith             Jones 
               Org2         Facil2                       Black 
                            Facil3 

234  Proj1     Org3  Ty2    Facil3     Harris            Jones 
               Org1 

393  Proj2     Org2  Ty3    Facil1     Smith             Black 

我可以为 1:N 字段创建一个函数来排序数据并显示不同的数据吗?我可以对字段使用“如果重复则抑制”选项,但我需要自行对 ID 中的每个字段进行排序。我不能使用group by和set groups,因为有4个1:N字段,而且它们都是相互独立的。

(过去进行分组会导致报告如下所示:

ID   Project   Org   Type   Facility   AssessorManager   Assessor 
123  Proj1     Org1  Ty1    Facil1     Smith             Jones 
                                                         Black 
                            Facil2                       Jones
                                                         Black
                            Facil3                       Jones
                                                         Black
               Org2         Facil1                       Jones 
                                                         Black 
                            Facil2                       Jones
                                                         Black
                            Facil3                       Jones
                                                         Black

...ETC。)

编辑...回答...我接受了 PowerUser 的回答,主要是使用他的第二个建议。我在查询中添加了字段。它仍然有重复,因为一些 1:N 字段是查询和排序字段。可能有比这里显示的更多的重复,但这就是想法。此外,我没有使用逗号分隔备注字段中的值,而是使用了返回字符。

ID   Project   Org   Orgs       Type    Facility   Facilities         AssessorManager   Assessors 
123  Proj1     Org1  Org1,Org2  Ty1     Facil1   Facil1,Facil2,Facil3   Smith          Jones,Black 
123  Proj1     Org2  Org1,Org2  Ty1     Facil2   Facil1,Facil2,Facil3   Smith          Jones,Black 
123  Proj1     Org2  Org1,Org2  Ty1     Facil3   Facil1,Facil2,Facil3   Smith          Jones,Black 
4

1 回答 1

0

+1为您的示例!所以让我直截了当。它可以工作,但您希望它更快地工作吗?

  1. 在您的第三个示例表中,我认为您正在使用 Helper(又名索引)表并正确加入您的数据。这可以解释为什么Proj 1, Org 1, Black当您的原始数据集中没有记录时您会有一行。内部连接可以解决这个问题,但要确保它不会在此过程中产生任何其他问题。
  2. 除了按 ID、Proj、Org 等进行分组外,您还可以创建一个用于分组的串联字段,即GroupBy=[ID]&[Proj]&[Org]. 这会加快速度,因为您只有 1 个分组级别。
  3. 根据您的标签,我相信您的数据源是 SQL Server 2008。如果您从查询中提取,请尝试创建一个临时静态表。这将大大简化 Crystal 的工作。

(如果这些建议之一有帮助,请告诉我哪一个。)

于 2010-12-13T14:28:45.367 回答