2013-12-11 57 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 
相关问题