2016-06-28 59 views
0

我有一張表,用於存儲我們的每個屬性以及他們是否在網站上對他們有某些圖標。此表格每日更新並加蓋日期。每天跟蹤表格中的變化

表字段:

  • 時間戳,
  • PropertyCode,
  • 的PropertyName,
  • FacilityBabyFriendly,
  • FacilityDogsAccepted,
  • FacilitySwimmingPool,
  • FacilityHotTub, FacilityInternetAcce SS,
  • FacilitySeaViews,
  • FacilityParking

所有設施領域的存儲爲1具有圖標或0無圖標]

我需要的是查詢,顯示了我,由財產,如果任何設施領域每天都有變化。

如果有人能指出我在正確的方向,如果將不勝感激。

+0

什麼是RDBMS? – Jayvee

+0

對不起,我應該說,這是MS SQL。 – Claire

+0

另外,FacilityX行的數據類型是什麼? – Jayvee

回答

0

下面的查詢會給你已更改設施領域的ATLEAST一個屬性列表與前一日相比

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

完美。完全按照我的想法工作。許多謝謝克萊爾 – Claire

+0

@克萊爾:高興地幫助。 upvote如果你滿意:) – Srini

0

一旦你可以做的一件事是計算每一行的哈希值進行比較,如果有任何變化:

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

值<> 0意味着設施已經改變

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