2017-06-06 4 views
-3

Ich verwende MYSQL XAMPPWie wählt man den letzten Datensatz und zeigt andere Spalten in mysql?

Ich habe Tabelle und die Date Spalte ist String

Date | Customer | Location | Cash | Balance | 
2015/6/23 LBalance  California 5000 3000 
2015/6/25 LBalance  New York  6000 4500 
2015/6/25 InHoss Dept. South Beach 15000 1000 
2015/6/20 InHoss Dept. South Beach 15000 1000 
2015/6/17 InHoss Dept. South Beach 15000 1000 
2015/6/22 LBalance  California 5000 4000 
2015/6/22 LBalance  New York  6000 6000 
2015/6/17 InHoss Dept. North Beach 18000 1000 

Wie Sie das neueste Datum Rekord von jedem Kunden mit verschiedenen Standorten abfragen, um zu wählen?

Erwarten Ergebnis:

Date  | Customer | Location | Cash | Balance | 
2015/6/23 LBalance  California 5000 3000 
2015/6/25 LBalance  New York  6000 4500 
2015/6/25 InHoss Dept. South Beach 15000 1000 
2015/6/17 InHoss Dept. North Beach 18000 1000 

dies ist der nächste i waren: SELECT Kunde, Ort, Bargeld, Gleichgewicht, max (Datum) AS "Ab" FROM mytable WHERE Kunde = 'LBalance' GROUP BY Kunde, Standort. Obwohl es das neueste Datum eines Kunden zeigt, zeigt die andere Spalte nur ihr erstes Ergebnis.

+1

Hinweis: 'GROUP BY' mit' MAX' –

+0

@TimBiegeleisen i seine erraten eine Hausaufgaben – Moudiz

+0

bitte zeigen, was haben Sie in Echt Beispiel wollen, was Ergebnis erwartet wird – Vecchiasignora

Antwort

0

select (*) von Xampp wo date = (select max (Datum) von Xampp)

+0

Ich habe meinen Beitrag bearbeitet. –

0

versuchen es

with cte (date, Customer, Location, Cash , Balance) as 
(
select cast('2015/6/23' as datetime) date, 'LBalance' Customer, 'California' Location, 5000 Cash , 3000 Balance 
union all 
select cast('2015/6/25' as datetime) date, 'LBalance' Customer, 'New York' Location, 6000 Cash , 4500 Balance 
union all 
select cast('2015/6/25' as datetime) date, 'InHoss Dept.' Customer, 'South Beach' Location, 15000 Cash , 1000 Balance 
union all 
select cast('2015/6/20' as datetime) date, 'InHoss Dept.' Customer, 'South Beach' Location, 15000 Cash , 1000 Balance 
union all 
select cast('2015/6/17' as datetime) date, 'InHoss Dept.' Customer, 'South Beach' Location, 15000 Cash , 1000 Balance 
union all 
select cast('2015/6/22' as datetime) date, 'LBalance' Customer, 'California' Location, 5000 Cash , 4000 Balance 
union all 
select cast('2015/6/22' as datetime) date, 'LBalance' Customer, 'New York' Location, 6000 Cash , 6000 Balance 
union all 
select cast('2015/6/27' as datetime) date, 'InHoss Dept.' Customer, 'North Beach' Location, 18000 Cash , 1000 Balance 
) 

select m.Date, m.Customer, m.Location, m.Cash, m.Balance 
    from cte m 
    where m.Date = (select max(mm.Date) 
        from cte mm 
        where mm.customer=m.customer 
         and mm.location = m.location) 

ich in meinem Beispiel everething überprüft haben, ist ok, bitte sicher sein, dass Sie verwenden mysql Beispiel

+1

Das OP möchte die neueste 'Aufzeichnung', die ich interpretiere, um zu bedeuten, dass es die gesamte Aufzeichnung will. –

+0

danke, ich habe die antwort geändert, versuchen sie es – Vecchiasignora

+0

Nicht funktionierend sir. –

0

letzten Eintrag, den Sie verwenden max() Funktion zu erhalten, wie es für jeden Kunden und Standort Sie Gruppe von Check die unten verwenden:

select max(date) , CUSTOMER, LOCATION from table GROUP BY CUSTOMER , LOCATION 

bearbeiten. Wenn das Datum Varchar (logisch falsch) ist, können Sie das unten tun.

select Max(cast(date as Date)) , CUSTOMER, LOCATION from table GROUP BY CUSTOMER , LOCATION 
+0

Ich habe meine Frage bearbeitet. Danke :) –

0

Da wollten Sie ein Datum String-Konvertierung. Nicht sicher, dass dies jedoch erforderlich ist, da max (date) möglicherweise immer noch ohne die Konvertierung funktioniert.

select max(STR_TO_DATE(Date, '%Y/%m/%d')),Customer, location, cash,balance from YourTable group by Customer, Location 

Happy Coding .. Bitte bestätigen Sie, was Sie brauchen. Es wird schwierig, die Änderungen zu verfolgen.

+0

Ich habe meine Frage bearbeitet. Vielen Dank :) –

0

vielleicht können Sie versuchen, diese

select a.* 
from yourtable a JOIN 
(select Customer,Location,Max(Date) as Mdate 
    from yourtable 
    group by Customer,Location) b 
on a.Customer=b.Customer and a.Location=b.Location and a.Date=b.Mdate 
Verwandte Themen