Функция SQL Server FIRST через JDBC - PullRequest
1 голос
/ 12 сентября 2011

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

SELECT FIRST(ID)
FROM table
GROUP BY NAME

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 12 сентября 2011

FIRST недопустимо в SQL Server (вы должны думать о Access). Может быть, вы имели в виду:

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

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

0 голосов
/ 02 декабря 2011

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

...