Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Abfrage eines Max-Wertes

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von andreas029, 28 Juni 2021.

  1. andreas029

    andreas029 Neuer Benutzer

    Hallo, ich bin bei neu hier und habe eine Frage: Ich habe folgende Tabelle mit einer einzigen Spalte:

    Datei-Version
    A-0
    A-1
    A-2
    B-0
    B-1

    Dabei handelt es sich bei den Buchstaben um Dateinamen und bei der Zahl um die zugehörige Versionsnummer. Ziel meiner bislang vergeblichen SQL-Abfrage ist, nur die Datei mit der höchsten Versionsnummer anzuzeigen, also A-2 und B-1.

    Leider komme ich nicht weiter, hat jemand eine Idee?

    Viele Grüße Andreas
     
  2. akretschmer

    akretschmer Datenbank-Guru

    wegwerfen und richtig machen.
     
  3. andreas029

    andreas029 Neuer Benutzer

    wegwerfen und richtig machen. ... ?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Ja. Du mixt 2 Dinge in einem Feld. Dazu kommt, daß Du etwas numerisch vergleichen willst, was als String vorliegt. Das geht alles auf Dauer nicht gut. Stell Dir vor, Du suchst eines Tages die höchste/niedrigste Version. In kurz: das fällt Dir sowieso irgendwann als Trümmerhaufen vor die Füße - darauf solltest Du nicht warten...
     
  5. andreas029

    andreas029 Neuer Benutzer

    OK, verstehe. Ich kann die Spalte auch in 2 unterschiedlichen Spalten auseinandernehmen, aber auch dann stehe ich auf der Leitung ...
     
  6. akretschmer

    akretschmer Datenbank-Guru

    zur Not kann man natürlich auch sowas machen ...

    Code:
    edb=*# create table andreas029 (muell text, version int generated always as (regexp_replace(muell,'^.*-','')::int) stored);
    CREATE TABLE
    edb=*# insert into andreas029 (muell) values ('A-0');
    INSERT 0 1
    edb=*# insert into andreas029 (muell) values ('A-1');
    INSERT 0 1
    edb=*# insert into andreas029 (muell) values ('A-10');
    INSERT 0 1
    edb=*# insert into andreas029 (muell) values ('A-2');
    INSERT 0 1
    edb=*# select * from andreas029 ;
     muell | version
    -------+---------
     A-0   |       0
     A-1   |       1
     A-10  |      10
     A-2   |       2
    (4 rows)
    
     
  7. akretschmer

    akretschmer Datenbank-Guru

    noch mal etwas anders ...

    Code:
    edb=*# create table andreas029 (muell text, datei text generated always as (regexp_replace(muell,'-.*$','')) stored, version int generated always as (regexp_replace(muell,'^.*-','')::int) stored);
    CREATE TABLE
    edb=*# insert into andreas029 (muell) values ('A-0');
    INSERT 0 1
    edb=*# insert into andreas029 (muell) values ('A-1');
    INSERT 0 1
    edb=*# insert into andreas029 (muell) values ('A-10');
    INSERT 0 1
    edb=*# insert into andreas029 (muell) values ('B-0');
    INSERT 0 1
    edb=*# insert into andreas029 (muell) values ('B-2');
    INSERT 0 1
    edb=*# select datei, max(version) from andreas029 group by datei order by datei;
     datei | max
    -------+-----
     A     |  10
     B     |   2
    (2 rows)
    
    
     
  8. andreas029

    andreas029 Neuer Benutzer

    Bis hierhin erstmal danke ... ich nutze die Ideen für meine weiteren Überlegungen ... ;-)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden