2010-12-22 14 views
0

Ich habe eine Tabelle, die die folgenden SpaltenErste Max (Date) aus ähnlichen Daten

TransDate (varchar20), Name (varchar20), Adresse (varchar20), Menge (int), Balance (int) hat

Jetzt muß ich „Recent Balance“ bekommen, die ich immer bin mit der folgenden Abfrage

Select Balance from myTable where TransDate = (Select Max(TransDate) from myTable) 

Diese Abfrage mir richtiges Ergebnis zu geben, wenn es pro Tag nur ein Eintrag wie unten

ist
10/12/2010 SomeName SomeAddress 1000 1000 
10/13/2010 SomeName SomeAddress 1000 2000 
10/14/2010 SomeName SomeAddress 1000 3000 

Aber was ist, wenn ich mehr als 1 Einträge pro Tag habe, wie unten gezeigt?

10/12/2010 SomeName SomeAddress 1000 1000 
10/12/2010 SomeName SomeAddress 1000 2000 
10/12/2010 SomeName SomeAddress 1000 3000 

Wie die „jüngste Balance“ mit dem oben Datumsformat zu bekommen?

Antwort

0

Danke für alle Antworten. Ich habe es

Unten arbeitet, ist die Abfrage, die für mich gearbeitet

Select Balance from myTable where TimeStamp = (select MAX(TimeStamp) as RecentTime from myTable where RecordDate = (Select MAX(RecordDate) from myTable) Group By RecordDate 

BTW hinzugefügt ich eine andere Spalte namens Timestamp myTable, so dass ich wissen bekommen, welche das neueste Datum unter den ähnlichen Daten ist

1
Select 
    Sum(Balance) 
from myTable 
where TransDate = (Select Max(TransDate) from myTable) 

Wenn Sie die Balance für jeden Tag will

Select 
    TransDate, 
    Sum(Balance) 
from myTable 
Group By TransDate 
1

Als Datumsformat nicht dem letzten Zeitstempel geben, können Sie nicht das letzte Gleichgewicht auf sie verlassen. Verwenden Sie stattdessen die Summe des Betragsfeldes:

Select 
    Sum(Amount) 
from myTable 
1

Wenn in der Datenbank Sie keinen wirklichen Indikatoren für das, was ist die jüngste von drei Datensätze, ist es unmöglich zu sagen, welche ist die neueste - Sie müssen so etwas ändern diese Zeit wird auch gespeichert, nicht nur Datum.

Wenn Sie nur eine der Aufzeichnungen für den letzten Tag benötigen, können Sie SELECT TOP 1, wenn Sie die Summe benötigen - siehe Sajib Mahmud oder John Hartsock Antworten

UPDATE

Wenn Balance tatsächlich ein Summe von Amounts, dann wählen Sie einfach die Summe Amounts, egal was Balance Werte sind.

+0

Danke für den Vorschlag. Eigentlich addiert Balance nicht nur den Betrag, es hängt vom Zustand meiner Software ab (entwickelt in VB.net). Wenn eine Bedingung erfüllt ist, wird Betrag zu Saldo addiert und wenn eine Bedingung falsch ist, wird der Betrag abgezogen, also wird 'Summe (Betrag)' nicht funktionieren. Wie du gesagt hast, ich denke, ich muss auch Zeitstempel in meinem Tisch gespeichert haben. – raziiq