我正在将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的别名 如果是这样的话?
感谢
答案 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中,您无法处理刚分配的别名。您需要使用子查询,或重复使用SUM
和COUNT
。
重新使用:
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