Skip to content

Instantly share code, notes, and snippets.

@alcheng10
Created March 11, 2020 10:52
Show Gist options
  • Save alcheng10/013024904e83269e5548172ac930745e to your computer and use it in GitHub Desktop.
Save alcheng10/013024904e83269e5548172ac930745e to your computer and use it in GitHub Desktop.
Date Daily Dim Table Example
DROP TABLE IF EXISTS DimCustomer_Car_Status;

CREATE TABLE DimCustomer_Car_Status AS
WITH Joined_Data AS (
SELECT 
  o.RegistrationGUID
  ,o.RegistrationNo
  ,o.OwnerName
  ,o.FromDate AS CarRegistrationFromDate
  ,o.ToDate AS CarRegistrationToDate
  ,p.PolicyNo
  ,p.FromDate AS PolicyStartDate
  ,p.ToDate AS PolicyEndDate
  ,CASE
    WHEN p.FromDate >= o.FromDate THEN p.FromDate
    ELSE o.FromDate
  END AS StartDate
  ,CASE
    WHEN p.ToDate <= o.ToDate THEN p.ToDate
    ELSE o.ToDate
  END AS EndDate
FROM CarRegistration o
LEFT JOIN CarInsurancePolicy p
  ON o.RegistrationGUID = p.RegistrationGUID
  AND o.FromDate <= p.ToDate
  AND o.ToDate >= p.FromDate
)
SELECT
  RegistrationGUID || '_' || PolicyNo || '_' || StartDate AS Status_SK
  ,StartDate
  ,EndDate
  ,RegistrationGUID
  ,RegistrationNo
  ,CarRegistrationFromDate
  ,CarRegistrationToDate
  ,PolicyNo
  ,PolicyStartDate
  ,PolicyEndDate
 
FROM Joined_Data 
;

SELECT * FROM DimCustomer_Car_Status;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment