2013-06-25 3 views
2

В настоящее время я пытаюсь разобраться в различии между двумя датами, с которыми мне было успешно, однако я хочу рассчитать среднее значение псевдонима столбца, который я создал.Можно ли создать новый столбец с использованием псевдонима столбца?

В настоящее время код, который я пытаюсь использовать:

SELECT actualfinish, actualstart, internalpriority, DATEDIFF(mi, actualstart, actualfinish) AS [date difference], AVG(DATEDIFF(mi, actualstart, actualfinish) AS [AVG date diff] 
FROM mytable 
WHERE (internalpriority=1) AND (actualfinish IS NOT NULL) AND (actualstart IS NOT NULL) 
ORDER BY [date difference]; 

Есть даже способ сделать это? Или я трачу свое время?

Большое спасибо за вашу помощь заранее.

ответ

1

Ну, прежде всего, вам нужно сделать GROUP BY для вашего AVG для работы. И чтобы сразу использовать псевдоним, вы не можете. Вы либо использовать CTE, производную таблицу, или просто использовать весь расчет снова:

КТР Метод

;WITH CTE AS 
(
    SELECT actualfinish, 
      actualstart, 
      internalpriority, 
      DATEDIFF(mi, actualstart, actualfinish) AS [date difference] 
    FROM mytable 
    WHERE (internalpriority=1) AND (actualfinish IS NOT NULL) AND (actualstart IS NOT NULL) 
) 
SELECT actualfinish, 
     actualstart, 
     internalpriority, 
     AVG([date difference]) OVER() [AVG date diff] 
FROM CTE 
ORDER BY [AVG date diff] 

Производная таблица:

SELECT actualfinish, 
     actualstart, 
     internalpriority, 
     AVG([date difference]) OVER() [AVG date diff] 
FROM ( SELECT actualfinish, 
       actualstart, 
       internalpriority, 
       DATEDIFF(mi, actualstart, actualfinish) AS [date difference] 
    FROM mytable 
    WHERE (internalpriority=1) AND (actualfinish IS NOT NULL) AND (actualstart IS NOT NULL)) A 
ORDER BY [AVG date diff] 
+0

Привет спасибо за быстрый ответ, я пытался как фрагменты кода и, к сожалению, в настоящее время я не работаю для меня. Для метода CTE я получаю «Msg 8120, уровень 16, состояние 1, строка 3 Столбец mytable.actualfinish» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. для производной таблицы кажется, что имена столбцов недопустимы. – Calibre

+0

@WillGolledge О, верно, я оставил это «AVG» там для ошибки. Попробуйте еще раз, пожалуйста, – Lamak

+0

Это исправило ошибку, однако, когда она запускается, в столбце 'AVD date diff', она по-прежнему показывает индивидуальную разницу для каждой строки, а не в среднем по всем строкам. – Calibre

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