請幫忙。這裏有一點點問題,需要一些幫助來解決它。我有一個查詢返回多行,當我嘗試格式化顯示時間,因爲我希望我收到以下消息...SQL如何格式化包含聚合或子查詢的時間
消息130,級別15,狀態1,行3 無法執行聚合函數在包含聚集或子查詢的表達式上。
這裏是我以前當我得到的錯誤...
CAST(SUM(DATEDIFF(second, 0, EntryTime))/3600 AS varchar(12)) + ':' +
RIGHT('0' + CAST(SUM(DATEDIFF(second, 0, EntryTime))/60 % 60 AS varchar(2)), 2) + ':' +
RIGHT('0' + CAST(SUM(DATEDIFF(second, 0, EntryTime)) % 60 AS varchar(2)), 2)
,當我被自己在查詢運行它,我感到我想正確的格式格式...
Project Name Total Time
AAA 0:00:19
BBB 0:00:04
CCC 6:00:06
DDD 16:05:52
但是,我似乎無法弄清楚如何格式化以下查詢以這種方式來顯示時間...
SELECT ProjName AS 'Project Name',
CONVERT(VARCHAR(10), SUM(CASE WHEN Phone = 0 AND Research = 0
THEN (DATEDIFF(SECOND, 0, EntryTime))
END)) AS [Total Time No PMRE],
CONVERT(VARCHAR(10), SUM(CASE WHEN Phone = 1 AND Research = 0
THEN (DATEDIFF(SECOND, 0, EntryTime))
END)) AS [Total Time Phone],
CONVERT(VARCHAR(10), SUM(CASE WHEN Phone = 0 AND Research = 1
THEN (DATEDIFF(SECOND, 0, EntryTime))
END)) AS [Total Time Research],
CONVERT(VARCHAR(10), SUM(DATEDIFF(SECOND, 0, EntryTime))) AS 'Total Time'
FROM WorkTime
WHERE EntryTime IS NOT NULL
GROUP BY ProjName
並得到以下結果......
Project Name Total Time No PMRE Total Time Phone Total Time Research Total Time
AAA 19 NULL NULL 19
BBB 4 NULL NULL 4
CCC 10800 7200 3606 21606
DDD 57952 NULL NULL 57952
所有這一切都是正確的,但我需要搞清楚如何格式化顯示爲小時的時間幫助:分鐘:秒......其實,我不知道需要秒,只需幾小時和幾分鐘,但任何建議,幫助,指向正確的方向將是美好的。謝謝!
只要時間是低於24小時,然後再使用CA:聲明@Seconds INT = 123 選擇轉換(VARCHAR(20),使用DateAdd(β,@秒,0),108 ) – bummi 2013-05-14 16:21:27
感謝您的建議馬克!不幸的是,會有超過24小時的時間。 – 2013-05-14 16:49:56
您在錯誤的帖子投了票;-),您將不得不在@MarkBannister – bummi 2013-05-14 17:06:09