我有以下T查询:
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,第16级,状态1,第15线 无效列名“DiffDate”。
这个查询背后的想法是,我希望在几天内侦破(结案)的案件数量。
示例:
天数
1=3例
2= 50例
3= 20起案件
我怎样才能做到这一点?
发布于 2013-05-05 07:03:58
您需要在GROUP BY子句中使用整个表达式,或者只需将整个语句包装在子查询中,然后对外部语句执行分组。
不能在在同一级别的ALIAS语句上创建的GROUP BY子句上使用GROUP BY的原因是,在创建ALIAS的SELECT子句之前执行GROUP BY。
这是SQL操作顺序:
试试这个查询,
SELECT COUNT(CaseId),
DiffDate
FROM
(
select CaseId,
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'
) sub
Group By DiffDate发布于 2013-05-05 07:43:51
不能在group by子句中使用别名。
要么使用派生表,要么简单地删除第二个选择。
select
count(CaseId),
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
DATEDIFF(day,CreateDate,LastActivityDate)发布于 2015-03-23 21:04:49
这不会给你带来同样的结果吗?
select Count(CaseId),
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 DATEDIFF(day,CreateDate,LastActivityDate)我是SQL的新手,所以我可能没有正确地掌握它。我看到我上面的评论有确切的语法,但我不知道它是否正确.
https://stackoverflow.com/questions/16382177
复制相似问题