0

次のようなテーブルがあります 私のデータベース 。呼び出されたすべての列と特定の変数の期間の合計を取得しようとしていますcalled。今私はこれを試しています:

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、呼び出されても実際には明確な値が得られないため、同じ番号を数回取得し、もちろん合計が同じように機能し、行の一部のみを合計することです。

group by time関数の使用でエラーが発生するため、削除できませんSUM

繰り返しますが、結果には1日に1すべての着信番号が含まれ、dursumにはすべての期間の合計が含まれ、バッチ列でグループ化されます...

どうすればこれを解決できますか?

4

2 に答える 2

1

あなたは正しいです、時間でグループ化しないことはあなたに正しい結果セットをもたらします。ただし、その場合に発生するエラーは簡単に説明できます。これは、select句で「time、CONVERT(VARCHAR(8)、time、4)AS Batch」を選択したことが原因であるため、時間フィールド(たとえば、MAX(time)、CONVERT(VARCHAR(8)、MAX(time)、4)ASバッチ。

よろしくお願いします

于 2012-11-25T11:47:29.843 に答える
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
于 2012-11-25T11:56:04.607 に答える