2016-06-16 14 views
0

イム次のテーブルを持って、SQLグループ

| ID |ID2 | price| 
+----+---+----+ 
| A | AA | 7 | 
| B | AA | 3 | 
| C | AA | 4 | 
| D | BB | 7 | 
| I | BB | 2 | 
| F | BB | 3 | 
| G | CC | 9 | 
| E | CC | 4 | 
| K | CC | 1 | 

+----+---+---+ 

とIM分野の価格とそれに対応する分の価格フィールドとID2によって次の表 グループを取得する必要がID1

| ID1 | ID2 | min_price | 
+----+---+---+---------- 
| B | AA | 3   | 
| I | BB | 2   | 
| K | CC | 1   | 
+----+---+---+--------- 
+1

なぜ 'Bのためのクエリです| AA | 1 'と' I | BB | 9?ソーステーブル – Alex

+0

にそのようなレコードはありません。 –

答えて

0
SELECT * 
FROM 
    #table t 
    INNER JOIN (
     SELECT 
      ID2 
      ,MIN(price) as min_price 
     FROM 
      #table 
     GROUP BY 
      ID2 
    ) g 
    ON t.ID2 = g.ID2 
    AND t.price = g.min_price 

ステップ1最低価格を見つけます。手順2は、IDを取得するために一致する元のレコードを取得するために関連します。これを行う他の方法もあります。

データセットに同じID2の2つのレコードが同じ価格で含まれている場合は、常に1つ以上のレコードが返されることに注意してください。

0

あなたの説明に基づいて、id2でグループ化し、最低価格とそれに対応するIDを取得する必要があります。ここ は同じ

SELECT id, 
    id2, 
    price 
FROM NEXT 
WHERE (price,id2) IN 
    (SELECT MIN(price), id2 FROM NEXT GROUP BY id2 
); 
1
select a.id, a.id2, a.price from #yourtable a 
join 
    (
    select id2, min(price) AS price 
    from #yourtable 
    group by id2 
    )b 
on a.id2=b.id2 and a.price=b.price