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

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,与项目,类型和Issessormanager有1:1的关系;以及与组织,设施和评估者的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中的每个字段进行分类。我不能使用组和集组,因为有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 
有帮助吗?

解决方案

+1为您的示例!因此,让我直截了当。它有效,但是您希望它能更快吗?

  1. 在您的第三个示例表中,我认为您使用的是助手(又称索引)表,并直接加入数据。这可以解释为什么您有一排 Proj 1, Org 1, Black 当您的原始数据集中没有记录时。内部连接将解决这一点,但请确保在此过程中不会产生其他任何问题。
  2. 您可以制作一个单个串联字段进行分组,而不是按ID进行分组,而是 GroupBy=[ID]&[Proj]&[Org]. 。由于您只有1个分组级别,因此这会加快速度。
  3. 根据您的标签,我相信您的数据源是SQL Server2008。如果您要从查询中拉出,请尝试制作临时静态表。这将大大简化晶体。

(如果其中一个建议很有帮助,请告诉我哪一个。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top