0

私は SSRS を学び始めたばかりで、SQL Server で中級者にすぎません。次のシナリオで合計時間を計算するレポートを SSRS で作成しようとしています。

  1. 通話開始 [時間]
  2. 通話の進行状況 [時間]
  3. 通話の進行状況 [時間]
  4. [時間] ホールド
  5. 通話の進行状況 [時間]
  6. [時間] ホールド
  7. 通話の進行状況 [時間]
  8. 通話終了 [時間]

取得しようとしているデータ: ステップ 8 - ステップ 1 - (ステップ 5 - ステップ 4) - (ステップ 7 からステップ 6 を引いたもの) したがって、サービス レベル レポートの呼び出しに費やされた生の時間を取得できます。

注意事項:

  • 保留になる場合とされない場合があります。
  • 複数のホールドがある場合とない場合があります。
  • 2 つのホールドを背中合わせに配置することができます。

Visual Basic でこれを行う場合は、配列を使用してループし、変数を取得します。これを行う方法や、SSRS または SQL Server 2008 R2 で可能かどうかはわかりません。

ヘルプ?(さらに情報が必要な場合は、喜んで提供します)

4

1 に答える 1

0

計算列を取得しようとしている場合、これは SSRS の問題というよりも SQL の問題のように思えます。私の質問は、あなたの構造からです。これらのすべてのポイントは、SQL または行の列を分離していますか? それらが列の場合は、はるかに簡単です。

終了時間から開始時間を取り除いてから、期間の任意の数値を取り除いているようです。SQL 操作を実行するために、SQL Management Studio で自己抽出する例を示します。

declare @Time1 time = '15:00', @Time2 time = '16:42', @DurationMinutes int = 34;

select 
    @Time1 as Time1
,   @Time2 as Time2

-- datediff gives you differences in an incremenet you specify between two values of date, time, or datetime
,   datediff(hour, @Time1, @Time2) as DifferenceInHours
,   datediff(second, @Time1, @Time2) as DifferenceInSeconds
,   datediff(minute, @Time1, @Time2) as DifferenceInMinutes

-- Dateadd can add or subtract an increment type and value from a point specified.  Be careful if you use ONLY TIME that you may go back a day and not notice it
,   dateadd(minute, - @DurationMinutes, @Time1) as Time


,   datediff(minute, @Time1, @Time2) - @DurationMinutes as TimeInMinutesLessDurationOfArbitraryTalkTime
于 2013-03-28T21:20:29.460 に答える