Crystal Reports: данные в записях хранятся в столбцах подряд, как я могу переставить эти столбцы или выбрать максимум из них? - PullRequest
0 голосов
/ 05 июля 2011

У меня есть устаревшая база данных, в которой данные хранятся таким образом, как:

id,a1,a2,a3,a4,a5...,a20,b1,b2,b3,b4,...,b20,c1,c2,c3,c4,...,c20

Моя задача состоит в том, чтобы выбрать 3 верхних значения из столбцов b и вывести соответствующие a и c значений.Итак, если максимальные значения в b5, b1, b17, то мне нужно напечатать в отчете что-то вроде этого:

a5, b5, c5
a1, b1, c1
a17, b17, c17

Я пытался использовать сводные таблицы и кросс-таблицы, нобез удачи (ну, это может быть результатом того, что у меня есть только базовое понимание Crystal Reports).

Могу ли я попросить несколько советов или рекомендаций, как мне этого добиться?

Спасибо.

1 Ответ

1 голос
/ 12 июля 2011

К сожалению, Crystal Reports не имеет функции Eval (), которая наверняка поможет.

Вот хакерский подход:

  1. создать раздел Detail для каждого набора полей: aX, bX, cX - таких разделов будет 20. Итак, Details a будет содержать a1, b1, c1; Детали b будут содержать a2, b2, c2. Вы поняли.
  2. определить, какие столбцы b содержат максимальные значения; сохранить эти столбцы # в массиве, возможно
  3. скрыть / показать каждый подробный раздел путем сравнения его индекса (буквы алфавита) с массивом указателей столбцов.

Другой подход заключается в создании запроса UNION в команде отчета:

SELECT ID, 1 as idx, a1 as A, b1 as B, c1 as C

UNION 

SELECT ID, 2 as idx, a2 as A, b2 as B, c2 as C

...

UNION

SELECT ID, 20 as idx, a20 as A, b20 as B, c20 as C

Отчетность по этому подходу тривиальна.

...