2010-08-10 3 views
2

문제점을 해결하는 동안 포럼을 탐색하고 있습니다.하나의 고유 한 열을 기반으로 행의 모든 ​​값 선택

다음 데이터가 포함 된 SQL Server 2000에 result이라는 테이블이 있습니다.

City  Price DepDate  RetDate 
Barcelona 145 2010-05-15 2010-05-20 
New York 400 2010-06-20 2010-06-20 
Barcelona 160 2010-05-17 2010-05-22 
New York 325 2010-05-10 2010-05-18 
Istanbul 250 2010-06-22 2010-06-27 

나는 모든 열이 반환되도록 SQL Server 2000에서 그를 조회 할하지만/별개의 누구와도 바꿀 수없는 다이애나 도시에 유일한 최저 가격이 표시되어 있습니다.

그래서 나는 내가이 작업을 수행하는 방법에 내 인생의 그림 아웃 캔트 다음

Barcelona 145 2010-05-15 2010-05-20 
New York 325 2010-05-10 2010-05-18 
Istanbu 250 2010-06-22 2010-06-27 

, 난 쉽게해야합니다 반환 싶습니다 그리고 내가 바보 같은 느낌거야 확신 할 때 솔루션이 제시됩니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

Brgds, 에릭

답변

1
SELECT 
    A1.* 
FROM 
    [TableName] A1 
    INNER JOIN 
    (
     SELECT 
      A.City 
      , A.Price 
      , MIN(A.DepDate) AS DepDateMin 
     FROM 
      [TableName] A 
      INNER JOIN 
      ( SELECT 
        City 
        , MIN(Price) AS PriceMin 
       FROM 
        [TableName] 
       GROUP BY City 
      ) B ON A.City = B.City AND A.Price = B.PriceMin 
     GROUP BY 
      A.City, A.Price 
    ) B1 ON A1.City = B1.City AND A1.Price = B1.PriceMin AND A1.DepDate = B2.DepDateMin 
+0

이 A.price = B.해야 MIN (가격)과 상태에 대한 별명을 제공하기 위해 쿼리에 수정이 필요 시도 > 그 후에이 쿼리는 작동합니다 –

+0

작동합니다! 이 점에 대해 대단히 감사 드리며 잘하면 무엇이 효과가 있는지 이해할 것입니다. 나는 여러 해 동안이 일을 해왔다. 고맙습니다!! –

+0

빠른 질문 하나, 가격을 구별해야하기 때문에 쉽게 수정할 수 있습니까? –

0

<가격를 AliasName이 하나

select City,Price,DepDate,,RetDate from Your_table a 
where a.Price = (select min(Price) from Your_table b 
       where a.city = b.city group by city) 
+0

이것은 잘 작동하는 것 같습니다 :) –