将访问查询转换为SQL Server 2012查询时出错

时间:2014-06-09 23:41:00

标签: sql sql-server ms-access

我正在将Access 1010中的查询转换为SQL Server 2012。 以下是查询的一部分

Count(Stats.SessionNumber) AS TotalSessions, Sum(Stats.Duration) AS TotalDuration, 
Round([TotalDuration]/[TotalSessions],1) AS AverageDuration

我收到以下错误: 列名称无效' TotalDuration'。 列名称无效' TotalSessions'。

是否需要在SQL Server中以不同方式处理TotalDuration和TotalSessions的别名 如果是这样的话?

感谢

2 个答案:

答案 0 :(得分:2)

你可以这样做......

SELECT  TotalSessions
       ,TotalDuration
       ,Round([TotalDuration]/[TotalSessions],1) AS AverageDuration
FROM (
        SELECT  Count([Stats].SessionNumber) AS TotalSessions
               , SUM([Stats].Duration) AS TotalDuration
        FROM Table_Name
     ) A

答案 1 :(得分:1)

在SQLServer中,您无法处理刚分配的别名。您需要使用子查询,或重复使用SUMCOUNT

重新使用:

Count(Stats.SessionNumber) AS TotalSessions, Sum(Stats.Duration) AS TotalDuration, 
Round(Sum(Stats.Duration)/Count(Stats.SessionNumber),1) AS AverageDuration

子查询:

SELECT TotalSessions, TotalDuration, Round(TotalDuration/TotalSessions,1) AS AverageDuration
FROM
(
  SELECT RCount(Stats.SessionNumber) AS TotalSessions, Sum(Stats.Duration) AS TotalDuration, 
  FROM yourTableName
 ) subquery