2016-09-23 6 views
0

У меня есть отчет SSRS, в отчете у меня есть таблица с Время начала, Время работы (продолжительность), Время в пути (Duration)Расчет сколько таймфрейма падает между двумя раза (SSRS)

I работает вне и „End Time“, используя время начала и продолжительность

Однако я также должен отработать ниже часов работали между 0600 - 0800 часов работали между 1700 - 2200 Отработанного между 2200 - 0600

И понятия не имею, где накануне n begin

+0

Можете ли вы поделиться DDL набора данных, некоторые выборочные данные и ожидаемый результат? Взгляните на страницу справки: [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) – NickyvV

ответ

0

Вам просто нужно настроить все логические шаги. Чтобы ответить на вопрос «Сколько часов моей продолжительности приходится на период с 06:00 до 08:00?» существует несколько вопросов, которые при ответе предоставят вам необходимые значения для расчета вашего ответа:

Имеет ли период времени перекрытие 0600-0800?
Или, время начала до 0800 и время окончания после 0600?

Если нет, то ваш ответ 0.
Или возвращать 0.

Если да, то ли начало периода времени, прежде чем 0600, так что вы должны игнорировать какое-то время?
Или, время начала вашего расчета является больше вашего времени начала и 0600.

Затем, делает конечный период времени после того, как 0800, так что вы должны игнорировать какое-то время?
Или время окончания вашего расчета является меньшим или ваш Конец времени и 0800.


Соберем все вместе на языке по вашему выбору:

If StartTime <= 0800 and EndTime >= 0600 
    calculate time between 
      if StartTime < 0600 
       0600 
      else 
       StartTime 
     and 
      if EndTime > 0800 
       0800 
      else 
       EndTime 
else 
    0 
+0

Итак, логика звучит и работает в VB, однако, пытаясь ее понять (в полях Mon_End_secs.Value => 21600), (iif (Поля! Mon_Start_Secs.Value <21600,21600, Поля! Mon_Start_Secs.). Value)) + (iif (Поля! Mon_End_secs.Value> 28800,28800, Поля! Mon_End_secs.Value)), 0) ' Я получаю ожидаемую ошибку выражения BC30201 –

+0

@MichaelAuty Зачем вы это делаете в выражении SSRS и не ваш исходный запрос? – iamdave