2016-05-09 2 views
0

SSRS 2008 R2 - Report Builder 3.0 - Запрос SQL Server 2008 R2SSRS Оператор IF с менее чем равные возвратами плохих подсчетами

У меня есть отчет, который должен получить данные из базы данных, которая имеет столбец «Last_Executed» , Мой набор данных возвращает запрос, который имеет столбец, посвященный DATEDIFF(), который возвращает количество дней с момента запуска во время выполнения. Теперь мне нужен фильтр, который содержит ключи за последние 7 дней.

Возможно, вы говорите: «Просто создайте другой набор данных и задайте свой запрос, чтобы вернуть их», и я могу просто сломаться и сделать это, но я не могу не думать, что есть лучшее решение с данными I иметь.

Существует одно текстовое поле с заполнителем, которое я хочу показать этому счету. Я попытался (Если синтаксис полей выключен, может быть только моя память, если проверка, что я подвергаю сомнению):

=SUM(IIF((Fields!MyData.Value <= 7),1,0),"MyDataSet") 

=SUM(IIF(Cint(Fields!MyData.Value <= 7),1,0),"MyDataSet") 

=COUNT(Fields!MyData.Value <= 7) 

Объем должен быть добавлен снаружи «IF», ​​чтобы позволить ссылка на данные, о которых идет речь, конечно. Я пробовал варианты «cast», но никто не возвращал правильные подсчеты. Набор результатов возвращает 1400 элементов, и мои тестовые данные должны возвращать 41 на основе проверки даты. Я получаю 581, 581 и 1400 соответственно, и если я удалю «<» и просто установил значение, равное 7, я получу ожидаемый 41 как в первых двух условных проверках.

Почему не работает «< =» работа с SUM - IIF?

Решение Найдено:

выключила NULL возвращается из запроса были причиной плохих отсчетов в сумме. Окончательное выражение сумма в конечном итоге существо:

=SUM(IIF(IsNothing(Fields!MyData.Value),0,IIF(Fields!MyData.Value <= 7,1,0)),"MydataSet") 

0 на верно для IsNothing проверки сосредоточил свой вопрос, позор я не проверить на наличие ошибок NULL первым. Спасибо за помощь :)

ответ

1

Не думаю, что COUNT будет работать правильно - SSRS не корректно оценивает логические значения целых чисел.

Ваш второй SUM может иметь один и тот же вопрос при преобразовании Boolean MyData < = 7 к INT с CINT.

Я не понимаю, почему это не работает, как ожидалось:

=SUM(IIF(Fields!MyData.Value <= 7, 1, 0), "MyDataSet") 

Вы говорите, когда вы удалите < результат является правильным, но я не вижу, каким образом. Это получило бы только записи, где он был выполнен 7 дней назад, но не меньше.

+0

Я нашел проблему, ее NULL, не могу поверить, что я не проверял это первым! Я пытаюсь удалить NULL из подсчетов, но все равно получаю плохой номер возврата. Например: 'code' = SUM (IIF (IsNothing (Fields! MyData.Value), IIF ((Fields! MyData.Value <= 7), 1,0), 0),« MyDataSet »)« code » NULL здесь, хотя :) –

+0

Хорошо, моя сумма была плохой в этом последнем комментарии, я добавлял успешные находки null, поэтому я бы получил 1400. Изменив это, чтобы добавить только 1, не сработал первый IF, должен был работать, но теперь я получаю ошибка 'code' = SUM (IIF (Fields! MyData.Value =" NULL ", 0, IIF (Fields! MyData.Value <= 7,1,0))," MyDataSet ")' code' Я получу это рано или поздно! –

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