Как отобразить несколько несвязанных записей 1:N в Crystal

У меня есть набор данных, о котором я сообщаю. Однако некоторые данные дублируются, а некоторые нет:

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 

Итак, для идентификатора существует связь 1:1 с Project, Type и AssessorManager; и отношения 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, которая упорядочивает данные и показывает отдельные данные? Я могу использовать параметр подавления при дублировании для поля, но мне нужно отсортировать каждое поле в идентификаторе отдельно. Я не могу использовать 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

...так далее.)

РЕДАКТИРОВАТЬ... ответ... Я принял ответ 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 

person thursdaysgeek    schedule 08.12.2010    source источник


Ответы (1)


+1 за ваши примеры! Просто дай мне понять это правильно. Это работает, но вы хотите, чтобы это работало быстрее?

  1. В вашем третьем примере таблицы, я думаю, вы используете вспомогательную (также известную как индекс) таблицу и правильно присоединяетесь к своим данным. Это объясняет, почему у вас есть строка для Proj 1, Org 1, Black, когда в исходном наборе данных нет записи. Внутреннее соединение исправит это, но убедитесь, что оно не создает никаких других проблем в процессе.
  2. Вместо группировки по ID, затем Proj, Org и т.д. можно сделать одно сцепленное поле для группировки, т.е. GroupBy=[ID]&[Proj]&[Org]. Это немного ускорит процесс, так как у вас есть только 1 уровень группировки.
  3. Основываясь на ваших тегах, я полагаю, что вашим источником данных является SQL Server 2008. Если вы извлекаете данные из запроса, попробуйте вместо этого создать временную статическую таблицу. Это значительно упростит работу Crystal.

(Если одно из этих предложений полезно, пожалуйста, сообщите мне, какое именно.)

person PowerUser    schedule 13.12.2010
comment
Я пошел с комбинацией 2 и 3. Я фактически добавил memo-поля в свой запрос и поместил объединенные наборы данных в каждый. Дублирования много, но это происходит только один раз и устраняет необходимость в подотчетах. Однако я не думаю, что смогу показать картинку в комментарии. - person thursdaysgeek; 15.12.2010