2016-07-19 6 views
0

Ich versuche, eine Tabelle mit mehreren nicht eindeutigen Fremdschlüsseln abzufragen. Ich mag die ‚Store‘ mit dem Mindestabstand (Meilen) So gibt wählen könnte mehr Geschäfte mit unterschiedlichen Abständen sein, und ich möchte eine deutliche Reihe mit den niedrigsten MeilenAuswählen des minimalen Spaltenwerts und Abfragen nur der entsprechenden Zeile

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 

Gerade jetzt diese die falschen Daten ziehen für ich ... ich stecke fest!

+0

könnten Sie bitte einige Beispieldaten und erwartete Ergebnis zeigen, hier ein Beispiel ist zu sehen: https: //spaghettidba.com/2015/04/24/how-to-post- at-sql-question-on-a-public-forum/ – TheGameiswar

Antwort

1

Nur row_number() verwenden:

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:

Wenn Sie die Zeile mit den wenigsten Meilen wollen, dann können Sie tun:

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

Dies gibt genau eine Zeile. Wenn Sie bei Bindungen mehrere Zeilen benötigen, verwenden Sie top with ties.

+0

Dies gibt immer noch nicht meinen gewünschten niedrigsten Wert zurück. Ich bemerke auf einigen Zeilen, dass es die zweit- oder drittniedrigste zurückgibt. –

0

Yo sind in der Nähe. Löschen Sie einfach region in 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

dasselbe Problem wie oben. Ich habe Situationen, in denen es immer noch nicht die richtige Zeile zieht. Könnte es sein, dass ich es zum Float machen muss? –

+0

Beispieldaten anzeigen bitte ich kann dann helfen – NEER