Функция SQL Server FIRST через JDBC

Я создаю приложение в режиме холодного синтеза, которое имеет соединение с базой данных SQL Server. Мне нужны групповые записи, и я возвращаю только первую в группе. Я написал следующий запрос в coldfusion.

SELECT FIRST(ID)
FROM table
GROUP BY NAME

Который возвращает следующую ошибку:

[Macromedia] [Драйвер JDBC SQLServer] [SQLServer] «first» не является распознаваемым именем встроенной функции.

Можно ли использовать первую функцию в запросе coldfusion?

Есть ли альтернативный способ сделать это?

*У меня нет прямого доступа к базе данных. Просто доступ к соединению для передачи данных холодного синтеза


person Kenneth J    schedule 12.09.2011    source источник
comment
К вашему сведению, причина, по которой FIRST сегодня не существует в SQL Server, заключается в том, что таблица по определению представляет собой неупорядоченный набор строк. Чтобы получить первую строку, вам нужно сообщить SQL Server, что вы имеете в виду. Есть ли у вас другой столбец (например, идентификатор или столбец даты/времени), который может помочь определить, что вы имеете в виду под первым?   -  person Aaron Bertrand    schedule 12.09.2011


Ответы (2)


FIRST недействителен в SQL Server (вы должны иметь в виду Access). Возможно, вы имели в виду:

SELECT NAME, MIN(ID)
FROM dbo.table
GROUP BY NAME;

В SQL Server "Denali" вы сможете использовать FIRST_VALUE/LAST_VALUE в сочетании с оконными функциями.

person Aaron Bertrand    schedule 12.09.2011

FIrst и Last не существуют в Sql Server 2005 или 2008, но в Sql Server 2012 есть функция FirstValue, LastValue. Я попытался реализовать агрегат First and Last для Sql Server 2005 и столкнулся с препятствием, заключающимся в том, что сервер sql гарантирует вычисление агрегата в определенном порядке. (См. атрибут SqlUserDefinedAggregateAttribute.IsInvariantToOrder Property, который не реализован.) Это может быть связано с тем, что анализатор запросов пытается выполнить вычисление агрегата в нескольких потоках и объединить результаты, что ускоряет выполнение, но не гарантирует порядок в какие элементы объединяются.

person Christoph K    schedule 02.12.2011