0

私は次のクエリを持っています:

SELECT COUNT(DATEPART(hh, CallStart)), DATEPART(hh, CallStart) as 'Hour'
  FROM PhoneSystemLog 
 WHERE MONTH(CallStart) = @Month and YEAR(CallStart) = @Year 
 GROUP BY DATEPART(hh, CallStart)

これは問題ありません。1時間あたりの通話数がグループ化されますが、午前12時から午前7時の間に行われた通話をグループにグループ化し、午後6時から午前12時の間に行われた通話はあまり行われないためグループにまとめます。当時は、その時間帯に1時間ごとに電話をかけるのは無意味に思えます(営業時間外なので)。これは可能ですか?

4

2 に答える 2

4

を使用して、case時間を期間に変換できます。

select  Period
,       count(*) as Calls
from    (
        select  case 
                when datepart(hh, CallStart) between 0 and 7 then '1-7'
                when datepart(hh, CallStart) between 18 and 23 then '18-24'
                else cast(datepart(hh, CallStart) as varchar(2))
                end as Period
        from    PhoneSystemLog
        where   MONTH(CallStart) = @Month 
                and YEAR(CallStart) = @Year 
        ) as SubQueryAlias
group by
        Period
于 2012-08-01T08:41:36.380 に答える
0

このようなものを試してください

select count(DATEPART(hh, CallStart)), 
    CASE 
    when DATEPART(hh, callstart) between 0 to 7 then '12:00AM-7AM'
    when DATEPART(hh, callstart) between 18 to 23 then '06PM-12AM'
    END
as 'hour' from PhoneSystemLog  
where MONTH(callstart) = @Month and YEAR(callstart) = @Year  
group by 
    CASE 
    when DATEPART(hh, callstart) between 0 to 7 then '12:00AM-7AM'
    when DATEPART(hh, callstart) between 18 to 23 then '06PM-12AM'
    END
于 2012-08-01T08:41:25.407 に答える