2014-02-19 4 views
1

У меня есть поле в наборе данных, которое содержит формулу (с использованием IFF и датированный), которая определяет, как долго была открыта запись (есть CreateDate и ClosedDate). Затем я группирую эту область.Группа SSRS по диапазонам

Однако я хочу иметь возможность группировать эти данные в диапазоны. Так что прямо сейчас заголовок - это дни открытых и три строки говорят 7, 5 и 1 (дни). Но строки будут увеличиваться по мере поступления большего количества данных, поскольку Days Open может быть любым числом от 1 до 50. Это означает, что я мог бы получить 50 строк.

Я хотел бы, чтобы было заданное количество строк, каждое из которых находилось в пределах диапазона. Таким образом, в одной строке будет открыто «1-5 дней», а затем подсчитайте, сколько строк> = 5, другая строка с «6-10 днями» и подсчитайте их. И т. Д.

Как я могу группировать вычисленное поле в разных диапазонах? Единственный способ, которым я могу думать, - написать много SQL.

ответ

3

Итак, если я правильно понял, вы добавили поле в набор данных, который использует выражение для вычисления значения «Дни открытия» на основе двух других полей (CreatedDate и ClosedDate).

Вы уже знаете, что значение Days Open может быть 1 - 50, и вы знаете, какие диапазоны вы хотите, чтобы вы могли добавить еще одно вычисленное поле в набор данных, основанный на том же вычислении, что и дни Open, например.

Предполагая, что ваши существующие дни Open расчет

=DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) 

, то вы можете добавить

=Switch(
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 0 And 
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=5, 
    "1-5 Days", 
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 5 And 
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=10, 
    "6-10 Days", 
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 11 And 
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=15, 
    "11-15 Days", 
... 
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 45 And 
    DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=50, 
    "45-50 Days" 
) 

Хотя это может быть значительно упрощена, если вы можете изменить фактический SQL запрос для Dataset выполнить DATEDIFF функции, например в T-SQL для SQL Server можно добавить

SELECT 
... 
DATEDIFF(dd, CreatedDate, ClosedDate) AS DaysOpen 
... 
FROM 
... 

, который даст вам одно поле набора данных запроса, который можно использовать в приведенном выше выражении, например,

=Switch(
    Fields!DaysOpen.Value) > 0 And 
    Fields!DaysOpen.Value) <=5, 
    "1-5 Days", 

Какой бы путь вы вычислить его, вы можете использовать этот Dataset поле, содержащее диапазон значений в простом выражении группирование в вашем табликсе.

+0

Это сработало очень хорошо (спасибо), но у меня есть проблема. Когда я сортирую в этом поле Switched A-Z, первое значение (1-5 дней) исчезает, и поле пустое. Если я сортирую Z-A, это проявляется просто отлично. Есть идеи? – SirRobin

+0

Nevermind - У меня была проблема с данными, которую я должен был исправить. Проблема сортировки уже не проблема. Ваше решение работает на 100%. – SirRobin

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