2016-09-23 49 views
0

我有一個SSRS報告之間的瀑布,在報告中,我有 開始時間的表,工作時間(持續時間),行程時間(持續時間)計算如何時間表的兩倍多(SSRS)

我0800 時間1700之間的合作 - - 使用的開始時間和持續時間

但是我還需要解決以下 時間0600之間的合作「M制定和‘結束時間’0600

- 2200 時間2200之間的合作

而且不知道該在哪裏放鬆n開始

+0

你能分享數據集的DDL,一些樣本數據和預期的輸出?看看幫助頁面:[如何創建一個最小化,完整和可驗證的示例](http://stackoverflow.com/help/mcve) – NickyvV

回答

0

您只需設置所有邏輯步驟。回答「我的持續時間從0600到0800有多少個小時?」的問題?有幾個子問題,在回答時會給你必要的值來計算你的答案:

時間段是否重疊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中工作, (Fields!Mon_Start_Secs.Value <= 28800)AND(Fields!Mon_End_secs.Value => 21600),(iif(Fields!Mon_Start_Secs.Value <21600,21600,Fields!Mon_Start_Secs。值))+(iif(Fields!Mon_End_secs.Value> 28800,28800,Fields!Mon_End_secs.Value)),0)' 我得到一個表達式期望的錯誤BC30201 –

+0

@MichaelAuty你爲什麼要在SSRS表達式中這樣做,不是你的源查詢? – iamdave

相關問題