2010-04-29 1 views
0

Я хочу отобразить диаграмму в отчете, в которой отображается сумма меры, сгруппированной по месяцам за последние 24 месяца. Месяцы, которые не имеют кортежей, не отображаются на графике. Мне этого не надо. Я хочу ровно 24 группы/баров, которые равны 0, если нет кортежей. Каков наилучший способ сделать это?Как определить диаграмму истории в хрустальных отчетах .net (2008)?

 thanks 
+0

Это довольно расплывчато. Я бы создал SP, который сделал всю необходимую вам группировку. Должно быть много документов о том, как использовать контрольно-измерительную систему кристалла. – Jeremy

+0

Спасибо за ответ, но не могли бы вы расширить термин SP? :-) – 2010-04-29 17:40:08

+0

ладно, извините, только что получил, хранимую процедуру. Я бы хотел сделать это без серверного программирования. Я попытался добавить представление, в котором добавлены фиктивные кортежи, которые всегда были 24-месячными, для источника данных, а производительность хрустальных отчетов ухудшалась до такой степени, что она больше не использовалась. Я думаю, что добавление объектов в базу данных только для того, чтобы заставить Crystal Reports отображать то, что я хочу, это очень уродливый дизайн. – 2010-04-29 17:49:16

ответ

1
--oracle-specific syntax 
with MONTHS as (

    --current month 
    SELECT TO_DATE(to_char(sysdate,'mm') || '/1/' || to_char(sysdate,'yyyy'),'mm/dd/yyyy') date_field, 0 measure_value 
    FROM DUAL 

    UNION 

    --prior month 
    SELECT add_months(TO_DATE(TO_CHAR(SYSDATE,'mm') || '/1/' || TO_CHAR(SYSDATE,'yyyy'),'mm/dd/yyyy'),-1) date_field, 0 measure_value 
    FROM DUAL 

    --continue for remaining 22 months 
), 

DATA AS (

    SELECT date_field, COUNT(measure_field) measure_value 
    FROM table 
    GROUP BY date_field 

) 

SELECT * 
from data 

UNION 

SELECT * 
FROM MONTHS m 
WHERE NOT EXISTS (
    SELECT 1 
    FROM data d 
    where m.date_field=d.date_field 
) 

Это будет иметь смысл для вас, чтобы создать определенную пользователем функцию, которая будет возвращать таблицу значений даты, а не все операторы UNION.

Используйте этот запрос в объекте Command отчета.

Смежные вопросы