select で集計関数と case ステートメントを使用してクエリを実行し、case ステートメントで group by を SQL Server 2005 で実行しようとしていますが、何か不足しているようです。
declare @td int
set @td = 20130731
select
count(*) as total,
case
when dateadd(s, cdm.[StartTime], '19700101') >= '2013-07-31 00:00:00.000' and dateadd(s, cdm.[StartTime], '19700101') < '2013-07-31 01:00:00.000'
then '0-1'
end as timestripe
FROM
[EXTERNAL_CDR].[dbo].[CDRMAIN] as cdm
WHERE
cdm.LocalDay = @td
AND cdm.targetnum IN ('500','600')
GROUP BY
timestripe
このcount(*)
部分は少し弱いですが、問題は group by ステートメントにあります。このクエリを実行すると、次のエラーが表示されます。
メッセージ 207、レベル 16、状態 1、行 15
列名「タイムストライプ」が無効です。
case ステートメントがエラーの根本的な原因のようですが、これを機能させるためだけにサブクエリや結合を記述する必要はありません。何か案は?