Zeilen-maximum

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

owT

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 Like

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 :wink: