Как найти Макса из Avg в SQL Server 2008 - PullRequest
0 голосов
/ 26 августа 2018
select
    max(total_price_new) 
from
    (select
         avg(Total_Price) as total_price_new, 
         Document_Ref  
     from
         TBL_Sales
     group by
         Document_Ref)

Это работает в SQLite, но не работает в SQL Server 2008.

Я получаю эту ошибку:

enter image description here

Кто-нибудь может знать альтернативное решение для этого?

Ответы [ 4 ]

0 голосов
/ 26 августа 2018

Вам не нужен подзапрос для этого:

select top (1) avg(Total_Price) as total_price_new
from TBL_Sales
group by Document_Ref
order by total_price_new desc;

Хорошим преимуществом этого подхода является то, что вы также можете получить Document_Ref с самым высоким средним значением.

0 голосов
/ 26 августа 2018

Вам нужен псевдоним (q) для внутреннего запроса:

select max(q.total_price_new) 
  from  ( select avg(Total_Price) as total_price_new, Document_Ref 
            from TBL_Sales
           group by Document_Ref) as q;

Это ссылка может быть полезной.

0 голосов
/ 26 августа 2018

Когда вы пишете любой внутренний подзапрос, вы должны указать это имя подзапроса для выбора данных во внешний запрос из этого результата подзапроса, поэтому вам просто нужен псевдоним вашего подзапроса

select
    max(total_price_new) 
from
    (select
         avg(Total_Price) as total_price_new, 
         Document_Ref  
     from
         TBL_Sales
     group by
         Document_Ref) as T
0 голосов
/ 26 августа 2018

Вам нужен псевдоним таблицы, например Tname

select max(total_price_new) 
from  ( 
  select avg(Total_Price) as total_price_new, Document_Ref 
  from  TBL_Sales
group by Document_Ref
)  Tname 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...