2016-07-19 6 views
0

複数の一意でない外部キーを持つテーブルを照会しようとしています。私は最小距離(マイル)との「ストア」を選択しますので、異なる距離に複数のストアがあるかもしれないと私は別々の行をしたい最低マイルで最小列の値を選択し、対応する個別の行のみを照会する

SELECT 
    m.store1, m.miles, mitable.region, mitable.terminal, mitable.city, mitable.state 
FROM 
    (SELECT 
     store1, MIN (miles) as miles 
    FROM 
     mitable 
    GROUP BY 
     region, store1) m 
INNER JOIN 
    mitable ON m.store1 = mitable.store1 
      AND m.miles = mitable.miles 

今、これは間違ったデータを引っ張っています私は...私は立ち往生している!あなたが最も少ないマイルで行をしたい場合は、あなたが行うことができます

select t.* 
from (select t.*, 
      row_number() over (partition by store1 order by miles asc) as seqnum 
     from mitable t 
    ) t 
where seqnum = 1; 

EDIT:

+0

regionを削除し、ここを見て一例は次のとおりです。https://spaghettidba.com/2015/04/24/how-to-post- at-sql-questions-on-a-public-forum/ – TheGameiswar

答えて

1

だけrow_number()を使用

select top 1 t.* 
from mitable t 
order by miles asc; 

これは、1つの行を返します。タイの場合に複数の行が必要な場合は、top with tiesを使用します。

+0

これは依然として私の希望する最低値を返していません。私はいくつかの行に2番目または3番目に低い値を返します。 –

0

よろしくお願いいたします。ちょうどあなたがいくつかのサンプルデータと予想される結果を表示してください可能性group by

SELECT 
    m.store1, m.miles, mitable.region, mitable.terminal, mitable.city, mitable.state 
FROM 
    (SELECT 
     store1, MIN (miles) as miles 
    FROM 
     mitable 
    GROUP BY 
     store1 
     --region 
    ) m 
INNER JOIN 
    mitable ON m.store1 = mitable.store1 
      AND m.miles = mitable.miles 
+0

上記と同じ問題。私はまだ正しい行を引っ張っていない状況があります。私はそれをフロートにする必要がありますか? –

+0

サンプルデータを表示してください – NEER

関連する問題