我有以下T-SQL查询:
- select
- count(CaseId),(SELECT DATEDIFF(day,CreateDate,LastActivityDate)) AS DiffDate
- from
- VW_Case_Analysis
- where
- CaseStatus = 'C'
- and LastActivityDate between '2013-4-1 00:00:00.000' and '2013-4-30 23:59:59.000'
- Group By
- DiffDate
我收到以下错误:
Msg 207,Level 16,State 1,Line 15
Invalid column name ‘DiffDate’.
例:
天
1 = 3例
2 = 50例
3 = 20例
我该怎么做到这一点?
解决方法
您需要在GROUP BY子句中使用整个表达式,或者只是将整个语句包装在子查询中,并对外部语句进行分组.
您不能在SELECT语句的同一级别上创建的GROUP BY子句上使用ALIAS的原因是因为GROUP BY在创建ALIAS的SELECT子句之前执行.
这是sql操作顺序:
> FROM子句
> WHERE子句
> GROUP BY子句
> HAVING子句
> SELECT子句
> ORDER BY子句
试试这个查询,
- SELECT COUNT(CaseId),DiffDate
- FROM
- (
- select CaseId,DATEDIFF(day,LastActivityDate) AS DiffDate
- from VW_Case_Analysis
- where CaseStatus = 'C' and
- LastActivityDate between '2013-4-1 00:00:00.000' and '2013-4-30 23:59:59.000'
- ) sub
- Group By DiffDate