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 の関係があります。組織、施設、評価者との 1 対 N の関係。

必要以上に繰り返さないレポートが必要で、1:1 データをレポートしてから、1:N データ セットごとにストアド プロシージャをレポートしました。以下のような結果になりますが、dog SLOW です。

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 フィールドがあり、それらはすべて互いに独立しているため、group by と set groups を使用できません。

(過去に group by を実行すると、次のようなレポートが作成されました。

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

...等。)

編集...答え...主に彼の2番目の提案を使用して、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. 3番目の例のテーブルでは、ヘルパー(別名インデックス)テーブルを使用していて、データに正しく結合していると思います。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 に答える