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

Zählerstände von Druckern differenziert abfragen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von TomBoss, 15 Mai 2012.

  1. TomBoss

    TomBoss Neuer Benutzer

    Hallo allerseits,

    ich habe hier in meiner Datenbank eine Tabelle voll mit Zählerständen von Netzwerkdruckern. Die Werte sehen in etwa so aus:

    [​IMG]

    Die Daten gehen weiter bis zum Ende von 2011. Ich brauche nun eine Abfrage, mit der ich die genaue Seitenanzahl ermitteln kann, die jeder Drucker an jedem Tag gedruckt hat. Da ich ja nur den Zählerstand habe, der schon seit Jahren immer weiter hochzählt, suche ich eine Abfrage, mit der ich dann evtl. (war schon mal so eine Idee von mir) den Zählerstand eines Tages mit dem Zählerstand des Vortages subtrahiere, um die genaue Seitenanzahl herauszubekommen.

    Hat jemand eine Idee, wie man an die Sache rangehen könnte?

    Liebe Grüße
    TomBoss
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Hy,

    da es sich hier um MSSQL handelt, fällt mir hier nur ein TSQL-Script als Lösung dafür ein.


    1. SQL-Stmt in einen Cursor speichern. Dabei muss die RICHTIGE Sortierung beachtet werden. (DATUM)
    2. Eine loop für JEDEN Drucker
    3. In der Loop den 1. Datensatz mit dem 2. Datensatz subtrahieren, anschließend den 2. Datensatz mit dem 3. Datensatz usw. bis keiner mehr übrig ist.

    Da ich von der Oracle Schiene komme, kann ich dir dies nun nur an einem kleinen PLSQL - Script zeigen.

    Code:
     
    declare
     
    v_count NUMBER DEFAULT 1;
     
    begin
     
    for my_printers IN ( Select a,druckername, a.zaehlerstand, a.datum from tabelle a order by a.druckername, a.datum )
    loop
     
       dbms_output.put_line( my_printers.druckername || ' ' || my_printers.datum || ':' );
     
         v_count := v_count + 1; --erhöhung der Zählvariable
     
       dbms_output.put_line( my_printers.zaehlerstand - my_printers.zaehlerstand(v_count) );
     
    end loop;
     
    end;
     
    
    LG
     
  3. ukulele

    ukulele Datenbank-Guru

    Probier mal das hier:
    Code:
    SELECT    t1.Druckername,
            t1.Zaehlerstand,
            (    SELECT    max(Zaehlerstand)
                FROM    tabelle t2
                WHERE    t1.Druckername = t2.Druckername
                AND        t1.Datum > t2.Datum ) AS Zaehlerstand_Vortag,
            (    SELECT    max(Zaehlerstand)
                FROM    tabelle t3
                WHERE    t1.Druckername = t3.Druckername
                AND        t1.Datum > t3.Datum ) - t1.Zaehlerstand AS Zaehlerstand_Differenz,
            t1.Datum
    FROM    tabelle t1
    ORDER BY t1.Druckername,t1.Datum
    Auch hier wäre die Sortierung wichtig.
     
    PLSQL_SQL gefällt das.
  4. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Ich hatte anscheinend heut früh noch den Polster im Gesicht!

    Danke ukulele!!

    Lg
     
  5. ukulele

    ukulele Datenbank-Guru

    Erstmal abwarten ob es funzt :)
     
Die Seite wird geladen...
Ähnliche Themen - Zählerstände Druckern differenziert
  1. Stoni
    Antworten:
    7
    Aufrufe:
    2.979

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