Passende SQL für Abfrage

22/06/2009 - 04:38 von Karl M. | Report spam
Hallo NG!

Ich bin mir nicht sicher, ob dieses Posting hier richtig ist. Ich versuche
unter SQL Server 2000 eine bestimmte Abfrage zu bauen.

Meine Tabelle ist folgendermaßen (CSV):

ID;CurrencyName;CurrencyAbbrevation;ExchangeRateToOneEUR;DateEffectiveFrom
1;Australian Dollar;AUD;1,72865701;15.6.2009
2;New Zealand Dollar;NZD;2,19527659;4.6.2009
3;Australian Dollar;AUD;2,886202;22.6.2009

Das Ergebnis, welches ich möchte, ist:

ID;CurrencyName;CurrencyAbbrevation;ExchangeRateToOneEUR;DateEffectiveFrom
2;New Zealand Dollar;NZD;2,19527659;4.6.2009
3;Australian Dollar;AUD;2,886202;22.6.2009

Also:
Jede Wàhrung mit ihrem aktuellen Wert. Vergangene Werte möchte ich nicht
haben.

Mein bisheriger Versuch in SQL:
SELECT Max(CurrenciesMain.ID) AS MaxvonID, CurrenciesMain.CurrencyName,
CurrenciesMain.CurrencyAbbrevation, CurrenciesDetails.ExchangeRateToOneEUR,
CurrenciesDetails.DateEffectiveFrom
FROM Currencies AS CurrenciesMain LEFT JOIN Currencies AS CurrenciesDetails
ON CurrenciesMain.ID = CurrenciesDetails.ID
GROUP BY CurrenciesMain.CurrencyName, CurrenciesMain.CurrencyAbbrevation,
CurrenciesDetails.ExchangeRateToOneEUR, CurrenciesDetails.DateEffectiveFrom
ORDER BY CurrenciesMain.CurrencyName, CurrenciesMain.CurrencyAbbrevation,
CurrenciesDetails.DateEffectiveFrom;

Aber was ist nun falsch daran?
Hat jemand Rat?

Vielen Dank im Voraus!

Mit freundlichen Grüßen
 

Lesen sie die antworten

#1 Christa Kurschat
22/06/2009 - 08:16 | Warnen spam
Hallo Karl,

Karl M. schrieb:

Hallo NG!

Ich bin mir nicht sicher, ob dieses Posting hier richtig ist.
Ich versuche unter SQL Server 2000 eine bestimmte Abfrage zu
bauen.

Meine Tabelle ist folgendermaßen (CSV):

ID;CurrencyName;CurrencyAbbrevation;ExchangeRateToOneEUR;DateEffectiveFrom
1;Australian Dollar;AUD;1,72865701;15.6.2009
2;New Zealand Dollar;NZD;2,19527659;4.6.2009
3;Australian Dollar;AUD;2,886202;22.6.2009

Das Ergebnis, welches ich möchte, ist:

ID;CurrencyName;CurrencyAbbrevation;ExchangeRateToOneEUR;DateEffectiveFrom
2;New Zealand Dollar;NZD;2,19527659;4.6.2009
3;Australian Dollar;AUD;2,886202;22.6.2009

Also:
Jede Wàhrung mit ihrem aktuellen Wert. Vergangene Werte möchte
ich nicht haben.




Ich würde mit zunàchst das höchste Datum zu jeder Wàhrung raussuchen:
Select CurrencyAbbrevation, max(DateEffectiveFrom) as maxdat from Tabelle
group by CurrencyAbbrevation

Diese Abfrage verbinde ich dann wieder mit der Tabelle:
select >Feldliste> from Tabelle a inner join
(
Select CurrencyAbbrevation, max(DateEffectiveFrom) as maxdat from Tabelle
group by CurrencyAbbrevation
) x on
a.CurrencyAbbrevation = x.CurrencyAbbrevation and
a.DateEffectiveFrom = x.maxdat

Gruß
Christa
Access-FAQ: http://www.donkarl.com
SQL-Server-FAQ: www.sqlfaq.de
InsideSql: www.insidesql.org

Ähnliche fragen