Insert into dbo.Cache(StringSearched, ColName, RowId, PercentMatch) select ValFromUser, ColumnName, RowNumber, Max(Percentage) from #Temp2 Group by ValFromUser, ColumnName, RowNumber order By Percentage desc
Вышеупомянутый оператор SQL дает следующую ошибку:
Column "#Temp2.Percentage" is invalid in the ORDER BY clause because it is not contained in either an aggregate function or the GROUP BY clause.
Я использовал функцию MAX
с процентом, т.е. MAX(Percentage)
, но все же получаю вышеупомянутую ошибку. Как мне это исправить?
2 ответа
Вы должны дать столбцу псевдоним, затем вы сможете использовать его в порядке следования.
Insert into dbo.Cache(
StringSearched,
ColName,
RowId,
PercentMatch)
select
ValFromUser,
ColumnName,
RowNumber,
Max(Percentage) as MaxPerc
from
#Temp2
Group by
ValFromUser,
ColumnName,
RowNumber
order By
MaxPerc desc
Кроме того, если в вашей таблице нет поля идентификатора или чего-то в этом роде, использование order by со вставкой бессмысленно.
Поддерживать порядок в таблицах таким способом более или менее бессмысленно, поскольку вам не гарантируется возврат строк в каком-либо определенном порядке, если вы не укажете порядок при извлечении.
Тем не менее, вы можете повторно использовать функцию в следующем порядке:
Insert into dbo.Cache (StringSearched, ColName, RowId, PercentMatch)
select ValFromUser, ColumnName, RowNumber, Max(Percentage)
from #Temp2
Group by ValFromUser, ColumnName, RowNumber
Order By max(Percentage) desc
Или дайте столбцу псевдоним и используйте его:
Insert into dbo.Cache (StringSearched, ColName, RowId, PercentMatch)
select ValFromUser, ColumnName, RowNumber, Max(Percentage) Perc
from #Temp2
Group by ValFromUser, ColumnName, RowNumber
Order By Perc Desc
Похожие вопросы
Новые вопросы
sql-server
Microsoft SQL Server — это система управления реляционными базами данных (RDBMS). Используйте этот тег для всех выпусков Microsoft SQL Server, включая Compact, Express, Azure, Fast-track, APS (ранее PDW) и Azure SQL DW. Не используйте этот тег для других типов СУБД (MySQL, PostgreSQL, Oracle и т. д.). Не используйте этот тег для вопросов по программному обеспечению и разработке мобильных устройств, если только он не связан напрямую с базой данных.