2016-04-26 14 views
0

Ich habe eine Master-Tabelle, sagen wir mast_tbl, wo jede Änderung in dieser Tabelle als ein anderer Eintrag in hst_mast_tbl geht. In beiden Tabellen steht col über Statusänderungen. Wenn ich jetzt die Anzahl der Datensätze verfolgen möchte, für die sich in den letzten 10 Tagen nur der Status geändert hat, wie kann ich das auf einfachste Weise erreichen?Finden Sie die Statusänderung

Um die Lag-Funktion zu verwenden, kann es vorkommen, dass mehr Spalte in der Master-Tabelle aktualisiert wird, also mehr als 1 Datensatz in meiner History-Tabelle. Wie kann ich das gleiche erreichen?

Vielen Dank im Voraus.

+2

Welche DBMS verwenden Sie? Außerdem: bearbeite deine Frage und füge die 'create table' Anweisungen, einige Beispieldaten und die erwartete Ausgabe hinzu. (_formatted_ text please, [keine Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a- Frage/285557 # 285557)) –

Antwort

0

Haben Sie versucht, Trigger zu verwenden? Wenn Sie SQL Server verwenden this könnte Ihnen helfen. Sie können den Auslöser unter Verwendung FOR UPDATE verwenden, wenn bestimmte Spalte auf dem Tisch bearbeitet Sie

CREATE TRIGGER [dbo].[trg_update] ON [dbo].[tbl_trans] 
WITH EXECUTE AS CALLER 
FOR UPDATE 
AS 
BEGIN 
    DECLARE @transaction VARCHAR(15) 
    DECLARE @action VARCHAR(10) 
    DECLARE @ref_id INT 
    DECLARE @trail_date DATETIME 

    SELECT 
     @transaction = '<your table here>', 
     @action = 'Update', 
     @ref_id = i.trans_id, 
     @trail_date = GETDATE() 
    FROM INSERTED i 

    INSERT INTO tbl_auditTrail (audit_trans,action,ref_id,trail_date) 
    VALUES (@transaction,@action,@ref_id,@trail_date) 
END 
GO 

so etwas wie dies sagen konnte.