我试图让一个带有聚合函数和 case 语句的查询在我的 select 和 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 行
无效的列名称“timestripe”。
似乎 case 语句是错误的根本原因,但我不应该仅仅为了让它工作而编写子查询或加入。有任何想法吗?