2017-09-21 3 views
0

OK, früher habe ich versucht, eine Abfrage zu verwenden, die ich normalerweise in SQL verwenden würde, um die niedrigste Bewertung 'OP' für jeden 'Facility Code'/' Bestellnummer 'Paarung. Dies ist in der unteren Hälfte der Union Abfrage unten enthalten.Convert SQL-Abfrage mit row_number() kompatibel mit Excel OLEDB Abfrage

Mein Problem ist, dass dies aus einer Excel-Tabelle liest und fehlschlägt. Nach dem googeln glaube ich, dass der Befehl row_number() nicht kompatibel ist.

Ich muss die gleiche Ausgabe ohne es zu erreichen, ich habe versucht, die Datensätze zu gruppieren, aber diese Abfrage schlägt ebenfalls fehl. Ich bekomme einen Fehler aufgrund der Felder, die nicht in der 'Gruppe von' sind, die keine Aggregatfunktion sind.

Dim Query As String = "SELECT [Facility Code],[Mach],[Part Number],[Part Name],[Order No#],[OP],[Status],[Order Qty],[Qty Comp]," & _ 
           "[Mfg Due Date],[Planner],[Standard efficiency],[TBC],[Std run labor time],[Std mach time],[Std setup hrs] " & _ 
           "From [" & sheetName & "] WHERE [Facility Code] LIKE 'R%' " & _ 
          "UNION " & _ 
          "SELECT [Facility Code],[Mach],[Part Number],[Part Name],[Order No#],[OP],[Status],[Order Qty],[Qty Comp]," & _ 
           "[Mfg Due Date],[Planner],[Standard efficiency],[TBC],[Std run labor time],[Std mach time],[Std setup hrs] " & _ 
           "From [" & sheetName & "] WHERE [Facility Code] LIKE 'J%' " & _ 
           "GROUP BY [Facility Code],[Order No#] ORDER BY [Facility Code],[Order No#],[OP] asc" 

Jede Hilfe wäre dankbar, danke im Voraus!

Antwort

0

Wenn Sie ein Feld verwenden möchten, das nicht in GROUP BY ist, müssen Sie die Funktion FIRST verwenden.

SELECT FIRST(a) FROM tbl GROUP BY b; 

Natürlich, wenn Sie unterschiedliche Werte von a innerhalb dieses haben, dauert es nur die erste. Alle anderen wegwerfen. Ich kenne die Daten nicht, daher weiß ich nicht, ob das ein Problem ist.

+0

Wenn ich also die FIRST (a) -Funktion für alle anderen Felder verwende, sollte ich Daten erhalten, die mit der ersten zurückgegebenen Zeile korilieren. Wenn ich nach a, b gruppiere und dann nach c sortiere .... sollten alle anderen Spalten mit dieser ersten Zeile auf der Grundlage meiner Sortierung (c) koordinieren, richtig? Ich werde viele andere Ergebnisse in diesen anderen Bereichen haben, ich muss nur sicherstellen, dass ich die Werte alle aus der gleichen Zeile bekomme. – SoundWaves

+0

Sie erhalten die Werte aus der gleichen Zeile. Wenn Sie eine ORDER BY ausführen, wird dies die erste Zeile nach der Sortierung sein. – Marius

+0

Das hat den Trick - Danke @Marius! – SoundWaves