2016-06-28 11 views
0

Ich habe eine Tabelle, die jede unserer Eigenschaften speichert und ob sie bestimmte Symbole auf der Website gegen sie haben. Diese Tabelle wird täglich aktualisiert und mit einem Datum versehen.Verfolgen Sie Änderungen in einer Tabelle auf einer täglichen Basis

Tabellenfelder:

  • Date,
  • Property,
  • Property,
  • FacilityBabyFriendly,
  • FacilityDogsAccepted,
  • FacilitySwimmingPool,
  • FacilityHotTub, FacilityInternetAcce ss,
  • FacilitySeaViews,
  • FacilityParking

Alle Facility-Feldern gespeichert werden als ein 1 [Symbol hat] oder 0 [kein Symbol]

Was ich brauche, ist Abfrage, die mir zeigt, durch Eigenschaft, wenn sich eines der Facility-Felder täglich geändert hat.

Wenn mir jemand in die richtige Richtung zeigen könnte, wäre ich sehr dankbar.

+0

Was ist das RDBMS? – Jayvee

+0

Entschuldigung, ich hätte sagen sollen, es ist MS SQL. – Claire

+0

auch, was sind die Datentypen der FacilityX Zeilen? – Jayvee

Antwort

0

Die folgende Abfrage Sie die Liste der Eigenschaften geben, die atleast eine der Anlage Felder hat sich geändert wie mit dem Vortag im Vergleich

SELECT 
    PropertyCode 
    ,PropertyName 
FROM Souce s1 
WHERE 
    DateStamp = Current_Date 
    AND 
    EXISTS 
    (SELECT 1 
     FROM 
    Source s2 
    WHERE 
     s1.PropertyCode=s2.PropertyCode 
     AND DateStamp = Current_Date - 1 Day 
     AND 
     (
     (s1.FacilityBabyFriendly<>s2.FacilityBabyFriendly) 
     OR 
     (s1.FacilityDogsAccepted<>s2.FacilityDogsAccepted) 
     OR 
     (s1.FacilitySwimmingPool<>s2.FacilitySwimmingPool) 
     OR 
     (s1.FacilityHotTub<>s2.FacilityHotTub) 
     OR 
     (s1.FacilityInternetAccess<>s2.FacilityInternetAccess) 
     OR 
     (s1.FacilitySeaViews<>s2.FacilitySeaViews) 
     OR 
     (s1.FacilityParking<>s2.FacilityParking) 
     ) 
    ) 
+0

Perfekt. Funktioniert genau wie ich wollte. Vielen Dank Claire – Claire

+0

@Claire: Glücklich zu helfen. upvote wenn du zufrieden bist :) – Srini

0

einmal, was Sie tun können, ist die Hash jeder Zeile berechnen zu vergleichen, wenn es eine Änderung:

select hashbytes('MD5',cast(FacilityBabyFriendly * 1000000 + FacilityDogsAccepted * 100000 + FacilitySwimmingPool * 10000 + FacilityHotTub * 1000 + FacilityInternetAccess * 100 + FacilitySeaViews * 10 + FacilityParking 
as varchar(100)) 
) from yourtable 
0

Wert <> 0 bedeutet Anlage hat

geändert
SELECT DateStamp 
     ,PropertyCode 
     ,PropertyName 
     ,FacilityBabyFriendly - LAG(FacilityBabyFriendly) OVER (PARTITION BY PropertyCode, PropertyName ORDER BY DateStamp) AS FacilityBabyFriendlyChanged 
     ,FacilityDogsAccepted - LAG(FacilityDogsAccepted) OVER (PARTITION BY PropertyCode, PropertyName ORDER BY DateStamp) AS FacilityDogsAcceptedChanged 
     ,FacilitySwimmingPool - LAG(FacilitySwimmingPool) OVER (PARTITION BY PropertyCode, PropertyName ORDER BY DateStamp) AS FacilitySwimmingPoolChanged 
     ,FacilityHotTub - LAG(FacilityHotTub) OVER (PARTITION BY PropertyCode, PropertyName ORDER BY DateStamp) AS FacilityHotTubChanged 
     ,FacilityInternetAccess - LAG(FacilityInternetAccess) OVER (PARTITION BY PropertyCode, PropertyName ORDER BY DateStamp) AS FacilityInternetAccessChanged 
     ,FacilitySeaViews - LAG(FacilitySeaViews) OVER (PARTITION BY PropertyCode, PropertyName ORDER BY DateStamp) AS FacilitySeaViewsChanged 
     ,FacilityParking - LAG(FacilityParking) OVER (PARTITION BY PropertyCode, PropertyName ORDER BY DateStamp) AS FacilityParkingChanged 
FROM YourTable 
Verwandte Themen