2016-01-29 7 views
0

У меня проблема: Дело будет рассчитываться с использованием самого последнего файла расчета. Файл Case и Calculation - это два разных набора данных без каких-либо ключевых элементов.SSRS Найти ближайшую дату/время

Dataset 1:

Dataset 2:

enter image description here

Я хотел бы получить что-то вроде следующего:

enter image description here

Для случая создана 12 января и 27 января , они использовали файл расчета, загруженный 12 января. Затем был загружен новый файл 28 января. Новый случай созданный 29 января, использовал этот последний файл расчета.

Теперь у меня есть выражение для генерации Б Расчет файла:

я добавил номер строки в Dataset 2. Для того, чтобы получить использовано Расчет файла, я

= IIF (LookUp (1, Fields! Row.Value, Fields! File_Upload_Time.Value, «Dataset 2») < (Fields! Case_Created_Time.Value, «Dataset 1»), LookUp (1, Fields! Row.Value, Fields! Completed. Значение, «CoreJob»), iif (LookUp (2, Fields! Row.Value, Fields! Completed.Value, «CoreJob») < (Fields! Case_Created_Time.Value, «Dataset 1»), LookUp (2, Fields! Row.Value, Fields! Completed.Value, «CoreJob»), iif (LookUp (3, Fields! Row.Value, Fields! Completed. Value, «CoreJob») < (Fields! Case_Created_Time.Value, «Dataatet 1»), LookUp (3, Fields! Row.Value, Fields! Completed.Value, «CoreJob»), iif (LookUp (4, Fields! Row) .Value, Fields! Completed.Value, «CoreJob») < (Fields! Case_Created_Time.Value, «Dataset 1»), LookUp (4, Fields! Row.Value, Fields! Completed.Value, «CoreJob»), 0))))

Выполняет эту задачу, но будет много строк в наборе данных 2, я не могу использовать вышеуказанное для поиска строки N. Есть ли что-то эффективное для выполнения задания?

В принципе, идея для каждого случая, Фильтр Б расчета файла по: раньше, чем случаю Created Time, затем выберите последнее использовано вычисление значения

Пожалуйста, запросите дополнительные разъяснения, если я не удался чтобы объяснить что-то должным образом. Благодарю.

+0

Сочетает ли данные в SQL с опцией? – stubaker

+0

Dataset 1 содержит первые два столбца (идентификатор случая и время создания) конечного набора данных. –

+0

@stubker спасибо :), но нет связи между наборами данных 1 и 2, то есть нет элемента первичного ключа для их соединения .... Хотелось узнать, как сделать цикл, чтобы найти ближайший из набора данных 2, вместо того, чтобы использовать ограниченный multi iif функции ... –

ответ

0

Я рекомендую изменить ваш набор данных (если возможно), а не пытаться сравнивать этот тип с самим сообщением; вы можете использовать APPLY operator как:

SELECT ct.CaseId, ct.CreatedTime, CalcFile.UsedCalcValue 
FROM CaseTable AS ct 
    CROSS APPLY(SELECT TOP 1 cft.UsedCalcValue 
       FROM CalcFileTable AS cft 
       WHERE ct.CreatedTime >= cft.UsedCalcValue 
       ORDER BY cft.UsedCalcValue DESC) AS CalcFile 
+0

Спасибо. Это похоже на отличное решение. Я это попробую. :) –

+0

Большое спасибо за ваше время и помощь. Я пробовал функцию CROSS APPLY, она отлично работает! :) –

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