2016-08-29 12 views
0

Ich möchte eine Spalte 'Zähler' erstellen, die Anzahl erhöht, wann immer wir die Select-Anweisung ausführen.Wie sql-Zähler in Select-Abfrage inkrementieren

Angenommen, wenn ich die Select-Abfrage heute ausführen. Meine Ausgabe wird wie folgt sein.

name | employeeid | counter 

raj  123    1 
steve  124    1 
brad  125    1 

Morgen, wenn ich die Abfrage ausführen wird der Zähler sollten

am 3. Tag

name | employeeid | counter 

raj  123    2 
steve  124    2 
brad  125    2 
pitt  126    1 
für alte Platten erhöht, wenn ich den Zähler laufen wird wie oben für alte Platten erhöht sollte.

name | employeeid | counter 

raj  123    3 
steve  124    3 
brad  125    3 
pitt  126    2 
camie  127    1 

select name, Employeeid, count (name) über (Partition nach Name) Zähler von mytable orded von doj ab

+0

Ein SELECT aktualisiert keine Tabellendaten. – jarlh

+0

Haben Sie für jeden Namen einen eigenen Eintrag für jeden Tag? – sagi

+1

Was passiert, wenn Sie select-Anweisung zweimal an einem einzigen Tag ausführen? – Pirate

Antwort

2

Wenn Sie annehmen, dass die Abfrage einmal pro Tag ausgeführt wird, ist Ihr Zähler im Grunde die Anzahl der Tage zwischen der Erstellung des Datensatzes und heute + 1. Nehmen wir an, das Erstellungsdatum wird in creation_date gespeichert. Sie benötigen wahrscheinlich Folgendes:

select name, employeeid, 
     trunc(sysdate - creation_date) + 1 counter 
from your_table 
+0

Ich möchte um 7 Uhr morgens ausführen .. – stephenjacob

2

Dafür müssen Sie Trigger verwenden, aber das Problem ist, dass Sie nicht verwenden können, Trigger auf select Aussage.

Aber es könnte durch die Verwendung von Handler eine PL/SQL-Prozedur erreicht werden - das die Select Events, an denen wir ausgelöst werden sollen, verarbeiten, dann können wir eine Fein abgestimmte Auditing Policy definieren, die unserem Handler zugeordnet ist.

Referenz: Click here

Hoffnung wird es helfen.