20 likes | 139 Views
To Find the Balance at a Point-in-time SQL. Account fact. Date. Account. dateKey (FK) branchKey (FK) productKey (FK) accountKey(FK) accountStatusKey (FK) householdKey (FK) balance …. dateKey(PK) fullDate …. accountKey(PK) accountNum ….
E N D
To Find the Balance at a Point-in-time SQL Account fact Date Account dateKey (FK) branchKey (FK) productKey (FK) accountKey(FK) accountStatusKey (FK) householdKey (FK) balance … dateKey(PK) fullDate … accountKey(PK) accountNum … To find the balance as of a certain date requires finding the last transaction prior to the date The following assumes the date surrogate keys are “increasing” as the date “increases”
To Find the Balance at a Point-in-time SQL Account fact Date Account dateKey (FK) branchKey (FK) productKey (FK) accountKey(FK) accountStatusKey (FK) householdKey (FK) balance … dateKey(PK) fullDate … accountKey(PK) accountNum … SELECT accountNum, balance FROM fact f, account a WHERE f.accountKey = a.accountKey AND f.dateKey = (select max(g.dateKey) FROM fact g WHERE g.accountKey = f.accountKey AND g.dateKey IN (SELECT d.dateKey FROM date d WHERE d.fullDate <= 'January 5, 2002') )