有没有办法在SQL Server中执行FIRST()?

时间:2009-05-28 21:48:43

标签: sql-server

从旧的Access日期开始,有一个First()函数允许您将第一行作为聚合函数。 SQL Server中是否有任何等效的内容?

SELECT
  c.ID
, p.ID
, FIRST(p.ProductName)
, SUM(fee.Amount)
from Fee as f
INNER JOIN Product as p
ON p.ID = f.ProductID
INNER JOIN Customer as c
ON c.ID = p.CustomerID
GROUP BY c.ID, p.ID

修改 我只想要任何一行的值,因为它们都是一样的。我试图对数据库好一点,让它给我第一个找到的数据库:)

4 个答案:

答案 0 :(得分:5)

嗯,这取决于。

你的意思是“任何一行”?然后你可以使用MIN或MAX,它应该适用于大多数数据类型。

但是,如果你的意思是“你能找到的第一行”,那么答案就是否定。

这类似于告诉数据库引擎“我希望你给我一个符合这些标准的特定行,其中一个标准就是你可以给我任何你想要的行”。

这样做的原因是,除非你订购行,否则没有第一个概念,你不能以任何有意义的方式对行进行排序,以便以这种方式处理组。

答案 1 :(得分:4)

你可以尝试:

SELECT  c.ID, p.ID, 
(SELECT TOP 1 ProductName FROM Product ORDER BY ID) AS ProductName, 
SUM(fee.Amount)
FROM Fee as f
INNER JOIN   Product as pON p.ID = f.ProductID
INNER JOIN Customer as cON c.ID = p.CustomerIDGROUP BY c.ID, p.ID

这个产品直接从Product表中获取第一个产品作为子查询。子查询中的ORDER BY ID可以获得ProductName表中的第一个Product

答案 2 :(得分:2)

您可以SELECT TOP 1 * FROM ...只获取第一行。

答案 3 :(得分:1)

不是我所知道的,只需使用MIN()