2016-01-29 135 views
0

我遇到以下問題: 該案例將使用最新的計算文件進行計算。案例和計算文件來自兩個不同的數據集,沒有任何關鍵元素。SSRS查找最近的日期/時間

數據集1:

數據集2:

enter image description here

我想要得到的東西像下面這樣:

enter image description here

對於第一種情況在1月12日和1月27日創建,他們使用1月12日上傳的計算文件。然後1月28日上傳了一個新文件。一個新案例1月29日創建使用這個最新的計算文件。

現在,我不得不產生使用的計算文件表達:

我添加行號數據集2.爲了得到使用的計算文件,我有

= IIF (Fields,Case_Created_Time.Value,「Dataset 1」),LookUp(1,Fields!Row.Value,Fields!Completed)(LookUp(1,Fields!Row.Value,Fields!File_Upload_Time.Value,「Dataset 2」)< Value,「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,「Dataset 1」),LookUp(3,Fields!Row.Value,Fields!Completed.Value,「CoreJob」),iif(LookUp(4,Fields!Row (Fields,Case_Created_Time.Value,「Dataset 1」),LookUp(4,Fields!Row.Value,Fields!Completed.Value,「CoreJob」),0) )))

它現在可以完成這項工作,但在數據集2中會出現很多行,我無法使用上述查找第N行。是否有任何有效的工作要做?

基本上,這個想法是每個情況下,通過過濾使用的計算文件:不是個案創建時間早,然後,選擇最新的使用的計算值

請詢問進一步的澄清,如果我失敗了正確地解釋一些事情。謝謝。

+0

是將SQL中的數據集合併成一個選項嗎? – stubaker

+0

數據集1包含最終數據集的前兩列(案例ID和創建時間)。 –

+0

@stubker謝謝:)但數據集1和2之間沒有關係,即沒有連接它們的主鍵元素....想知道如何做一個循環來找到距離數據集2最近的循環,而不是使用有限的多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

謝謝sooooooo你的時間和幫助。我已經嘗試過CROSS APPLY功能,它工作得非常出色! :) –