2013-12-11 85 views
0

經過多次追蹤和磨難後,我才能夠編寫以下查詢。僅從查詢中返回最高記錄(或第1行)

SELECT  repName.repID, repName.Rep_Name, Positions.Position, repName.Roster, DataSheet.ENTERED 
FROM   DataSheet INNER JOIN 
          repName ON DataSheet.EE_ID = repName.repID INNER JOIN 
          Positions ON repName.Job_Code = Positions.Job_Code 
WHERE  (DataSheet.ENTERED <= @ENTEREDEnd) 
GROUP BY repName.repID, repName.Rep_Name, Positions.Position, repName.Roster, DataSheet.ENTERED, DataSheet.ITEM_ASSIGNED 
HAVING  (DataSheet.ENTERED >= @ENTEREDStart) AND (DataSheet.ITEM_ASSIGNED = @ITEM_ASSIGNED) AND (repName.Roster = N'YES') 
ORDER BY DataSheet.ENTERED 

我仍然感覺我身邊SQL的方式,並想知道這是否查詢可以被修改,使得它只返回頂部值或行1.我想該值發送到一個文本框在我形成。

謝謝

回答

1

要返回TOP N行只需要使用下面的

SELECT TOP (1) /* rest of your query*/ 

您還可以使用百分比與TOP子句是這樣

SELECT TOP (10) PERCENT /* rest of your query*/ 

如果你有相同的價值觀在TOP N和你想要所有的行TOP相同的值,你可以使用類似

SELECT TOP (N) WITH TIES /* rest of your query*/ 
+0

謝謝,我忘了提及我正在使用SQL CE,TOP不支持它。 –

+0

@JoseM。你可以使用'ROW_NUMBER()'函數嗎? –

+0

如果SQL CE使用了這個TOP(N)。您必須用圓括號括起數字。 – Jade

0

在端

預言取決於分貝風味

MSSQL select top 1

MySQL的limit 1where rownum <=1

1

IF SQL CE使用此TOP(N)。您必須用圓括號括起數字。因爲你命令他們使用

ORDER BY DataSheet.ENTERED 

如果您想使用前N或限制N的查詢

將返回最早的行檢索到的最新行讓你的排序爲

ORDER BY DataSheet.ENTERED desc 
相關問題