2009-05-28 3 views
4

내 옛날 Access에서 집계 함수로 첫 번째 행을 가져올 수있는 First() 함수가있었습니다. SQL Server에 상응하는 프로그램이 있습니까?SQL Server에서 FIRST()하는 방법이 있습니까?

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 

편집 : 그들은 모두 동일하게 진행되기 때문에 난 그냥, 어떤 행에서 값을 원했다. 나는 데이터베이스에 좋을려고 노력했다. 그리고 그것이 나에게 그것이 발견되는 첫번째 것을 줘 보자 :)

답변

5

글쎄, 달려 있습니다.

"모든 단일 행"을 의미합니까? 그런 다음 MIN 또는 MAX를 사용할 수 있으므로 대부분의 데이터 유형에서 작동합니다.

그러나 "찾을 수있는 첫 번째 행"을 의미하면 대답은 '아니오'입니다.

데이터베이스 엔진에 "이 행에 특정 행을 지정하면이 기준에 맞는 것이고 조건 중 하나는 원하는 행을 줄 수 있다는 것"과 비슷합니다.

이유는 행을 주문하지 않으면 첫 번째 개념이 없기 때문에이 방법으로 그룹과 관련이있는 의미있는 방식으로 행을 정렬 할 수 없기 때문입니다.

+0

jrcs3의 대답을 살펴 보겠습니다. 하위 쿼리를 사용하면 원하는 것을 제공 할 수 있습니다. –

2

첫 번째 행만 얻으려면 SELECT TOP 1 * FROM ...을 할 수있다.

1

잘 모르겠지만 MIN()을 사용하십시오.

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 IDProduct 테이블의 첫 번째 ProductName을 가져와야합니다.

관련 문제