2012-11-25 1 views
0

다음과 같은 표가 있습니다. my db 이제 모든 특정 열과 특정 기간의 합계를 얻으려고합니다. called var. 지금 나는이 노력하고있어 :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에 의해 주문 때문에 추측, 그리고 당연히이다 합계는 동일하게 작동하고 행의 일부만 합계합니다.

SUM 기능을 사용하면 오류가 발생하므로 group by time을 제거 할 수 없습니다.

는 다시 나는 결과가 모든 전화 번호를 하루에 한 번 어떻게 든 일괄 열을 기준으로 그룹화 모든 기간의 합 를 포함하는 dursum ...

가 어떻게이 문제를 해결할 수를 갖고 싶어?

답변

1

시간에 따라 그룹화하지 않았 으면 올바른 결과 집합이 나타납니다. 그러나 그때 발생하는 오류는 쉽게 설명 할 수 있습니다 : select 절에서 "시간, CONVERT (VARCHAR (8), time, 4) AS 일괄 처리"를 선택하면 발생합니다.> 따라서 일종의 집계가 필요합니다. . 나는 결국 그것을 해결하는 방법을 시간 필드 (예를 MAX (시간이) 변환을 위해 (VARCHAR (8), MAX (시간), 4) AS 배치

안부

+0

하지만 난 일을하지 않아도 내가 실제로 다른 날과 같이 내가 다시 표시하기 위해 호출을 원하십니까, 결과는 그 시간에 의해 그룹화 할 필요가 –

+0

어쩌면 내가 가진 문제를 :.. 당신이 하루에 의해 그룹을 원한다 :-) -> 이 작업은 쉽게 수행 할 수 있습니다. datetime을 날짜로 변환하는 하위 쿼리를 사용하여 쿼리를 마무리하십시오! – 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 
관련 문제