2017-02-20 5 views
0

Was ich erreichen möchte, ist Abfrage eines bestimmten Feldes, field1, aber 2 Felder Daten zurückgeben. Ich benutze MS Access 2010 und field1 ist Text und "Feld2" ist Date. HierMS Access SQL Query Distinct Return Mehrfachfeld

ist der aktuelle Code:

select distinct (field1) from tblOne where year(ddate) = 2016 

Ich habe versucht, über Online-Gruppierung gesucht, aber wenn ich versuche, es zu fragen, sagt das Feld ‚nicht Aggregat‘

(höchstwahrscheinlich als es ist ein Date Typ?)

Das eindeutige Feld sollte 'field1' sein.

Probe DB:

field1  field2 
------  -------- 
0000  1/1/2016 
0000  1/1/2016 
0000  1/1/2017 
0001  1/1/2016 
0002  1/1/2015 

and the query should return this: 
field1  maxfield2 
------  -------- 
0000  1/1/2017 (the latest date) 
0001  1/1/2016 
0002  1/1/2015 
+0

Gibt Ihre erste Abfrage einen Fehler, oder ist dieser Fehler von etwas anderem gekommen? –

+0

"und zwei Felder aus den Daten zurückgeben" - welche zwei Felder? field1 und field2 oder zwei andere zufällige Felder, müssen Sie klar sein, wenn Sie eine qualitativ hochwertige Antwort wollen – Daniel

+0

Hallo, der Code 'Select distinct (field1) von tblOne, wo Jahr (ddate) = 2016' funktioniert gut, aber wir müssen es zurückgeben 2 Feldwert - Feld1 (Text) und auch Feld2 (Datum). danke – aboka

Antwort

2

Sie brauchen nicht eindeutig, verschieden gilt für alle Felder in der Auswahl nicht nur einen unmittelbar rechts von dem Schlüsselwort distinct. Distinct wird Ihnen eine Liste von "distinct" Zeilen liefern, d. H. Es entfernt nur die Duplikate.

Sie benötigen eine GROUP BY. Dadurch wird nur jeweils eine eindeutige Kombination der gruppierten Felder angezeigt. Sie können dann Aggregate für andere Felder ausführen, die nicht nach Gruppen gruppiert sind. Das Aggregat, das Sie hier haben möchten, ist MAX, wie Sie sagten, dass Sie das späteste oder größte Datum wollten.

SELECT field1, MAX(field2) AS maxfield2 
FROM tblOne 
GROUP BY field1; 
+0

hmmm, das ist seltsam. Ich erinnere mich, vorher auf diesen Kommentar geantwortet zu haben. wie auch immer, danke für die Probe, es funktioniert perfekt :) – aboka