2014-06-09 6 views
0

Я уверен, преобразование запросов из Access 1010 в SQL Server 2012. Ниже часть запросаОшибка при преобразовании запроса доступа к SQL Server 2012 запрос

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

я получаю следующую ошибку: Недопустимое имя столбца 'TotalDuration. Недопустимое имя столбца 'TotalSessions'.

Нужно ли обрабатывать псевдоним TotalDuration и TotalSessions по-разному в SQL Server , и если да, то как?

благодаря

ответ

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

В 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 
+0

спасибо за информацию о назначении псевдонима – maggs

Смежные вопросы