2012-12-18 80 views
0

我正在爲OTRS票據編寫SSRS報告,我的挑戰如下。我必須確定票證的SLA是否與票證打開時的日期相同。我的工作周是週一到週五,節假日除外。一天中的工作時間爲09:00至17:00(共計8小時)。一些優先票有2小時的解決時間,一些非必需票有5天的解決時間。如果優先票在星期五的16:55開放,並且下一個星期一是假日,則解決日期應該在星期二的10:55(換句話說,票SLA應該在工作時間內的下一個工作日)在SQL中計算下一個工作日期

我的SLA時間在幾分鐘即(2小時= 120分鐘或5天= 2400分鐘)內存儲在ticket_SLA表中。的5天計算如下:

2400分鐘通過60分鐘劃分得到小時,除以8獲得的天數(有在一個工作日8小時)

六十零分之二千四百/ 8 = 5天。

確定了這一點之後,我必須繼續下去並確定該票是否在SLA內。如果沒有,我會在報告中以不同顏色顯示票證。

,我應該工作過可用字段說明如下:

票表:

Create_time datetime, ticket_sla_id int, tn long, 

SLA表:

sla_Id int, solution_time int (number of minutes) 

假期表:

holiday_name varchar, holiday_date, holiday_iD 

任何建議我如何可以接近這將不勝感激。在此先感謝

+0

哪些DBMS您使用修改小提琴,演示?甲骨文? PostgreSQL的?火鳥? –

回答

2

對於TSQL,請查看我的解決方案SQLFiddle。 如果您使用另一個DBMS,您應該能夠將sql轉換爲您的語法。

提供的解決方案將返回每張票的截止日期。 在第一個CTE中,您必須定義min start-and end enddate。 希望有所幫助!

注意設置DATEFIRST(見this

@updated

+0

我看到你要去哪裏,但是我有時間限制,我的一天是8小時。即如果我的服務檯是24小時,這意味着我有3個工作日。如果在2012年2月18日上午10點記錄了一張票,並且其拍攝時間爲2400分鐘(5天),考慮到1.週末(週六和週日)2. 2012年12月25日的聖誕假期和於2012年12月26日3.每天結束於17:00 – user600131

+0

12月25日和26日未被視爲,因爲那些日子不包括在假期表中。無論如何,你說得對,我錯過了將sla分成8小時的時間間隔。我已經添加了這個。請參閱更新的小提琴演示。 – Nico

+0

感謝此工作! – user600131