Zählerstände von Druckern differenziert abfragen

TomBoss

Neuer Benutzer
Beiträge
1
Hallo allerseits,

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

tabelle7hk7q.jpg


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

PLSQL_SQL

SQL-Guru
Beiträge
176
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
 

ukulele

Datenbank-Guru
Beiträge
4.637
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.
 
Werbung:
Oben