Voll am verzweifeln mit dem Problem
tabelle(so vorgegeben, kann nix verändert werden)
8 Spalten mit den namen der messstationen
ca. 250 Zeilen mit messergebnissen
gesucht werden die 250 max. Messergebniss, wobei nicht interessiert wo gemessen wurde sondern nur was
Access 2000-db, bevor ichs vergesse
Hi Matthias,
250 max. Messergebniss, wobei nicht interessiert wo gemessen wurde sondern nur was
was hält Dich davon ab, das Ergebnis nach der Spalte „Messwert“ absteigend zu sortieren?
Gruß Ralf
die struktur
datum|bayern|sachsen|berlin|saarland|hessen|NRW|Thüringen|BW
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
und immer so weiter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Matthias,
kannst du das brauchen:
Function maxInZeile(w1, w2, w3, w4, w5) w = w1
If (w2 > w) Then w = w2
If (w3 > w) Then w = w3
If (w4 > w) Then w = w4
If (w5 > w) Then w = w5
maxInZeile = w
End Function
Und dann einen Abfrage:
SELECT w1,w2,w3,w4,w5
FROM data
ORDER BY maxInZeile(w1,w2,w3,w4,w5)
Ggfs. mehr Werte vorsehen …
Wenn das nicht geht, was kannst du denn mit der Tabelle überhaupt machen, außer ansehen …
mfg
Dirk
so weit war ich
Function maxInZeile(w1, w2, w3, w4, w5) AS Integer
w = w1
If (w2 > w) Then w = w2
If (w3 > w) Then w = w3
If (w4 > w) Then w = w4
If (w5 > w) Then w = w5
maxInZeile = w
End Function
Und dann einen Abfrage:
SELECT maxInZeile(w1,w2,w3,w4,w5) AS [Maximum]
FROM data;
nur habe ich gehofft, die SQL-Freakz hier kennen eine bessere Lösung
Moin,
datum|bayern|sachsen|berlin|saarland|hessen|NRW|Thüringen|BW
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
xx.xx.xx|1|1|1|1|1|1|1|1|1
Ihhhh *G*
Select top 100 percent datum, bayern as Messwert
Union
Select top 100 percent datum, sachsen as Messwert
Union
…
…
order by messwert desc
Wie du jetzt aus dem Stand nur die ersten 250 der Union bekommst hab ich nicht nachgeschaut, TOP 250 funktioniert jedenfalls nicht.
Aber so als Anregung könnte das Ganze sicher dienen
Gruß
Daniel Scholdei
Hallo Matthias,
wenns denn SQL sein soll und man nicht alle Spalten kennt könnte das helfen:
http://vyaskn.tripod.com/search_all_columns_in_all_t…
hab´s nicht probiert, sollte aber alle Spalten aller Tabellen finden. Dann entsprechende selects max(@columnName) einbauen und dann
select max(col1) from #result
Hatte jetzt keine Lust mehr.
Willst du das in Angriff nehmen? helf dir gerne, da man das doch öfter mal brauchen könnte.
mfg
Dirk
Hi Matthias,
bescheuerte Tabellenstrukturen sind vernünftigen Lösungen kaum zugänglich. Der Konstruktionsfehler liegt im Vektor über die Länder. Beheben lässt sich das nur durch einen Umbau der Struktur:
Select Datum, „Bayern“, Bayern as Messwert from T
Union
Select Datum, „Sachsen“, Sachsen as Messwert from T
…
Union
Select Datum, „BW“, BW from T
Order by Messwert descending.
Anmerkung: UNION oder UNION ALL, je nach Aufgabenstellung.
Gruß Ralf
1 „Gefällt mir“
danke, der Lösungsansatz bringt mich viel weiter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
so sieht jetzt meine Lösung aus(für alle dies interessiert)
Manfred`s lösung aus dem SQL-Thread hat auch mitgeholfen
3 Abfragen
1.Datum:
SELECT Werte.Datum
FROM Werte;
2.TMP:
SELECT [Datum], [NRW] AS temp FROM Werte
UNION
SELECT [Datum], [BAYERN] AS temp FROM Werte
UNION
… alle durch
3.Result:
SELECT Max(TMP.temp) AS Maximum, Datum.Datum
FROM Datum INNER JOIN [TMP] ON Datum.Datum = TMP.Datum
GROUP BY Datum.Datum;
danke nochmal an alle 