2016-06-28 65 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