0

Voice-over-IPとの会話の総数をカウントするSQLクエリがあります。

SELECT COUNT(*) AS 'Aantal gesprekken'
,FromUri AS 'Medewerker'
,SUM(DATEDIFF(hour,InviteTime,EndTime)) AS 'Uren'
,SUM(DATEDIFF(minute,InviteTime,EndTime)) AS 'Minuten'
,SUM(DATEDIFF(second,InviteTime,EndTime)) AS 'Secondes'
   FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUri

SQL Server 2012では、数値、従業員、時間、分、秒の結果が得られます。

302 robert  11  518 31316

しかし、私はこの結果を得る必要があります:28時間19分56秒。私はレギュラー/60の方法を計算しましたが、正確な結果を得るにはどうすればSQLでこれを行うことができますか?!

今後ともよろしくお願いいたします。

4

2 に答える 2

1

以下のクエリのように試してください

SELECT COUNT(*) AS 'Aantal gesprekken',FromUri AS 'Medewerker',                
concat(
  floor(SUM(DATEDIFF(second,InviteTime,EndTime))/3600),":",   //Hrs
  floor(SUM(DATEDIFF(second,InviteTime,EndTime))/60)%60,":",  //Mins
  SUM(DATEDIFF(second,InviteTime,EndTime))%60                 //Secs
  ) as Total_Hrs
   FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUri
于 2013-03-26T08:50:38.793 に答える
0

Steolearyの助けを借りて、私はソリューションを管理しました

DECLARE @SecondsToConvert int
SET @SecondsToConvert = (SELECT (SUM(DATEDIFF(hour,InviteTime,EndTime) * 3600) + SUM(DATEDIFF(minute,InviteTime,EndTime) * 60) + SUM(DATEDIFF(second,InviteTime,EndTime) * 1)) AS [Seconds] 
 FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUri)

-- Declare variables
 DECLARE @Hours int
 DECLARE @Minutes int
 DECLARE @Seconds int

-- Set the calculations for hour, minute and second
SET @Hours = @SecondsToConvert/3600
SET @Minutes = (@SecondsToConvert % 3600) / 60
SET @Seconds = @SecondsToConvert % 60

SELECT COUNT(*) AS 'Aantal gesprekken'
,FromUri AS 'Medewerker'
,@Hours AS 'Uren' ,@Minutes AS 'Minuten' , @Seconds AS 'Seconden'
 FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUri

その結果、正確な時刻がわかりました。

302 robert  28  19  56

28時間19分56秒、そうあるべきです:)

于 2013-03-26T08:36:58.703 に答える