2012-11-25 76 views
0

我有一個表如下: my db 現在我試圖讓所有被調用的列和一個特定的called變種的持續時間的總和。 現在,我想這一點:如何按1個元素進行分組並獲得其他的總和?

select called,SUM(duration) as dursum,time,CONVERT(VARCHAR(8), time, 4) AS Batch 
from Calls 
where caller='somevalue' 
group by called,time 
order by called 

現在的問題是,我猜是因爲我通過time秩序,我真的不通過被稱爲,我得到了相同數量的幾次得到不同的值,並ofcourse總和作用相同,僅累加部分行。

我無法刪除group by time,因爲它會導致使用SUM函數的錯誤。

我想再次的結果有充分的被叫號碼一次每天,幷包含所有的時間總和由間歇塔以某種方式進行分組dursum ...

我怎樣才能解決這個問題?

回答

1

你是對的,不是按時間分組會給你帶來正確的結果。然而,出現的錯誤很容易解釋:它是由選擇子句中的「time,CONVERT(VARCHAR(8),time,4)AS Batch」引起的 - >因此,您只需要某種聚合。時間字段(例如MAX(時間),CONVERT(VARCHAR(8),MAX(時間),4)批量

問候

+0

但我並不需要一個我真正需要的結果,到那個時候進行分組,對於不同的日子我確實想呼叫者再次顯示 –

+0

也許我收到了你的問題:你白天想組:-) - >這可以很容易完成:只需將查詢包裝到將日期時間轉換爲日期的子查詢中即可! – Enno

0

嗯,這是我到底怎麼解決它:

select called,SUM(duration) as dursum, dateadd(DAY,0, datediff(day,0, time))as Batch2 ,CONVERT(VARCHAR(8), time, 4) AS Batch 
from Calls 
where caller='0502081971' 
group by called, dateadd(DAY,0, datediff(day,0, time)),CONVERT(VARCHAR(8), time, 4) 
order by called 
相關問題