IF OBJECT_ID ('dbo.folder_sizes') IS NOT NULL DROP TABLE dbo.folder_sizes GO CREATE TABLE dbo.folder_sizes ( id INT NOT NULL IDENTITY, root_name VARCHAR (2000) NOT NULL, folder_name VARCHAR (200) NOT NULL, size INT, logged_at DATETIME DEFAULT GETDATE () ) GO IF OBJECT_ID ('dbo.v_folder_size_changes') IS NOT NULL DROP VIEW dbo.v_folder_size_changes GO CREATE VIEW dbo.v_folder_size_changes AS SELECT fsi.root_name, fsi.folder_name, changes.size_change FROM dbo.folder_sizes AS fsi JOIN ( SELECT fsi.id, size_change = fsi.size - ISNULL (( SELECT TOP 1 fsi1.size FROM dbo.folder_sizes AS fsi1 WHERE fsi1.folder_name = fsi.folder_name AND fsi1.logged_at < fsi.logged_at ORDER BY fsi1.logged_at DESC ), 0) FROM dbo.folder_sizes AS fsi ) AS changes ON changes.id = fsi.id WHERE changes.size_change <> 0 GO