2016-11-25 4 views
0

This is the table data .So verwenden Sie groupby, distinct in sql

Tabellenname ist Voycomaster. Wie man unterschiedliches Gefäß und auch ein Schiff wählt, haben viele voyagenumber, folglich addiere ich das voyagedate für die select die voyagenumber als Maximum (voyagedate). Je nach Schiff wählen Sie max (Voyagedate) und Voyagenumber. Wie zu lösen ..

select distinct(Vessel), VoyageID, VoyageNumber, max(VoyageDate) as vdate, VIA, 
     ROTNo, CutOffDate, CutOffTime, ETA, ETD 
from VoyageMaster 
group by Vessel 

Vielen Dank im Voraus

+0

Fügen Sie einige Beispieltabellendaten und das erwartete Ergebnis sowie formatierten Text hinzu. Zeigen Sie uns auch Ihren aktuellen Anfrageversuch. – jarlh

+0

Wählen Sie distinct (Vessel), VoyageID, VoyageNumber, max (VoyageDate) als vdate, VIA, ROTNo, CutOffDate, CutOffTime, ETA, ETD aus der VoyageMaster-Gruppe nach Vessel – sarode111

+0

Distinct ist keine Funktion einer Spalte, sondern Teil von SELECT DISTINCT' und gilt für die gesamten ausgewählten Zeilen. ('select distinct (Vessel), VoyageID ...' ist das selbe wie 'select distinct Vessel, VoyageID ...' und auch dasselbe wie 'select distinct Vessel, (VoyageID) ...' ...) – jarlh

Antwort

0

Try This:

SELECT A.Vessel,V1.VoyageID,V1.VoyageNumber,A.VoyageDate 
FROM VoyageMaster V1 
JOIN (SELECT Vessel,MAX(VoyageDate) VoyageDate 
     FROM VoyageMaster 
     GROUP BY Vessel) A 
    ON A.Vessel = V1.Vessel 
    AND V1.VoyageDate = A.VoyageDate 
+0

Fehler angezeigt: -deutige Spalte Name "Vessel" und "VoyageDate" – sarode111

+0

Jetzt prüfen Ich aktualisierte Abfrage – Mansoor

+0

Danke, es ist wirklich hilfreich für mich .. – sarode111

0

Versuchen Sie diese:

SELECT * from VoyageMaster 
where VoyageDate in (select max(VoyageDate)from VoyageMaster group by vessel) 

Oder nur die Spalten, die Sie wünschen:

SELECT Vessel,VoyageID,VoyageNumber,VoyageDate,VIA,ROTNo,CutOffDate,CutOffTime,ETA,ETD 
from VoyageMaster 
where VoyageDate in (select max(VoyageDate)from VoyageMaster group by vessel)