2010-08-10 120 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

需要在查詢修改給別名MIN(價格)和條件應該是A.price = B. ,之後,此查詢將起作用 – 2010-08-10 09:55:17

+0

It Works!非常感謝你,希望我能理解它是如何工作的。我一直在這個多年。謝謝!! – 2010-08-10 10:05:29

+0

一個簡單的問題是,修改這個問題很容易,因此價格也必須明顯不同。 – 2010-08-10 10:11:37

0

試試這個

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

這似乎也適用於:) – 2010-08-10 10:45:13

相關問題