2011-09-12 59 views
1

我正在建立一個具有SQL Server數據庫連接的冷聚變應用程序。我需要團體記錄,只返回組中的第一個。我在Coldfusion中寫了下面的查詢。SQL Server通過JDBC的FIRST函數

SELECT FIRST(ID) 
FROM table 
GROUP BY NAME 

這是返回以下錯誤:

[Macromedia公司] [SQLServer的JDBC驅動程序] [SQLServer的] '第一' 是無法識別的內置函數名稱。

是一種在Coldfusion查詢中使用第一個函數的方法嗎?

是否有此成就的另一種方式?

*我沒有直接訪問數據庫的權限。只需訪問冷融合數據連接

+0

僅供參考今天SQL Server中不存在'FIRST'的原因是因爲根據定義,表是無序的一組行。爲了獲得「第一」行,你需要告訴SQL Server你的意思。你是否有另一欄(如身份或日期/時間欄)可以幫助確定你的意思是「第一」? –

回答

6

FIRST在SQL Server中無效(您必須考慮使用Access)。也許你的意思是:

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

在SQL Server「Denali車型」,你將能夠結合使用FIRST_VALUE/LAST_VALUE開窗功能。

+0

這可能只是工作。 –

0

第一個和最後一個不存在於Sql Server 2005或2008中,但在Sql Server 2012中有一個FirstValue,LastValue函數。我試圖實現Sql Server 2005的第一個和最後一個聚合,並且遇到了SQL Server確保按照定義順序計算聚合的障礙。 (請參閱屬性SqlUserDefinedAggregateAttribute.IsInvariantToOrder屬性,該屬性未實現。) 這可能是因爲查詢分析器試圖執行多個線程上的聚合計算併合並結果,這會加快執行速度,但不能保證順序其中元素被彙總。